본문 바로가기

Coding Test/JS

백준 18870

목차

    https://www.acmicpc.net/problem/18870

     

    18870번: 좌표 압축

    수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에

    www.acmicpc.net

    풀이

    let fs = require('fs')
    let input = fs.readFileSync('/dev/stdin').toString().split('\n')
    
    let N = Number(input[0])
    let array = input[1].split(' ').map(Number)
    
    let array_ = [... new Set(array)]
    array_.sort((a,b) => a-b)
    
    let myMap = new Map()
    for (i = 0 ; i<array_.length ; i++){
        myMap.set(array_[i], i)
    }
    
    answer = ""
    for (x of array) answer += myMap.get(x)+" "
    console.log(answer)

    참고

    1. 배열을 unique하게 만들기

       uniqueArray = [... new Set(arr)]

    2. Map 객체

    2-1 요소 추가: myMap.set("key1", "value1")

    2-2 요소 삭제: myMap.delete("key1")

    2-3 특정 키에 해당하는 값 가져오기 : myMap.get("key1")

    'Coding Test > JS' 카테고리의 다른 글

    백준 2675  (0) 2023.10.09
    백준 4344  (0) 2023.10.09
    백준 11399  (0) 2023.10.06
    백준 11047  (0) 2023.10.04