Coding Test/JS
백준 18870
dohem
2023. 10. 9. 18:42
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")