[백준/node.js] 18870번 좌표 압축
2023. 8. 20. 11:35ㆍTrip to Cote
문제를 보고 실버2라 와 개어렵겠다라고 생각했으나 생각보다 답이 쉽게 나와서 돌렸다.
const [n, k] = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.replaceAll("\r", "")
.split("\n");
let answer = "";
const points = k.split(" ").map(Number);
const points2 = k.split(" ").map(Number).sort();
points.map((i) => (answer += points2.indexOf(i) + " "));
console.log(answer.trim());
코드도 짧아서 성공이다 싶었지만 시간초과로 계속 실패였다. 문제는 내가 시간 복잡도에 대한 개념이 없다보니 발생한 문제였다. 순회하면서 인덱스 값을 찾는게 복잡도를 상승시킨다는 글을 보았다. 다음은 문제 대신 이 부분을 공부해야겠다.
const [n, k] = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.replaceAll("\r", "")
.split("\n");
let answer = "";
const points = k.split(" ").map(Number);
let points2 = [...new Set(points)].sort((a, b) => a - b);
let myMap = new Map();
for (let i = 0; i < points2.length; i++) {
myMap.set(points2[i], i)
}
for (x of points) answer += myMap.get(x) + " ";
console.log(answer)
강의에서는 map 생성자 함수를 통해서 풀었다.
'Trip to Cote' 카테고리의 다른 글
[알고리즘] 이진 탐색에 대해 잠깐 알아보자 (0) | 2023.09.16 |
---|---|
node.js 메서드에 대해 알아보자 (0) | 2023.09.12 |
[백준/node.js] 1181번 단어 정렬 (0) | 2023.08.20 |
[백준/node.js] 15624번 피보나치 수 7 (못 풀었음) (0) | 2023.08.11 |
[백준/node.js] 10828번 차이를 최대로 (못 풀었음) (0) | 2023.08.08 |