문제
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.
Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다.
X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.
입력
첫째 줄에 N이 주어진다.
둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다.
출력
첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다.
제한
- 1 ≤ N ≤ 1,000,000
- -10^9 ≤ Xi ≤ 10^9
내 답안:
const { SlowBuffer } = require("buffer");
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\\n") ;
input.shift() ;
input = input[0].split(" ").map(Number) ;
let arr = [...new Set(input)].sort((a,b) => a - b) ;
let map = new Map();
for (let i = 0 ; i < arr.length ; i++ ){
map.set(arr[i], i) ;
}
let answer = input.map((x) => map.get(x)) ;
console.log(answer.join(" ")) ;
>> arr를 set해서 중복을 없앤 후 sort해줌
>> map으로 각 요소의 index를 쉽게 찾을 수 있게 해놓음
>> input.map으로 찾음
'백준' 카테고리의 다른 글
[실버] 회의실 배정 (1931번)_JS (0) | 2022.12.19 |
---|---|
[실버] Z (1074번)_JS (0) | 2022.12.19 |
[실버] 연결 요소의 갯수 (11724번)_JS (0) | 2022.12.19 |
[백준] 최대 힙 ( 1279번)_JS (0) | 2022.12.19 |
[실버] 색종이 만들기 (2630번)_JS (0) | 2022.12.19 |