코테 문제 풀이

[백준 18870] 좌표 압축 (Node.js)

2DC 2023. 5. 19. 10:13

문제 링크

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

 

18870번: 좌표 압축

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

www.acmicpc.net


답안

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "text.txt";
const newLine = process.platform === "linux" ? "\n" : "\r\n";
const key = fs.readFileSync(filePath).toString().trim().split(newLine)[1].split(" ").map(Number);
const map = new Map();

[...new Set(key)].sort((a, b) => a - b).forEach((el, i) => map.set(el, i));
let answer = "";
key.forEach((el) => {
  answer += `${map.get(el)} `;
});
console.log(answer.trim());
  • 주어지는 배열의 단위가 큰 관계로 On^2가 들어가는 순간 문제 풀이는 실패했다고 봐야한다. 
  • 따라서 map, set, 해시 등 시간복잡도를 줄일 수 있는 방법을 알고있다면 어렵지 않게 풀 수 있다.