문제이해하는게 약간 시간이 걸렸다
Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. << 라는 표현을 잘 이해해보면
결국 문제의 예제에 있는
2 4 -10 4 -9
라는 값을 크기 순위로 나타낸다는 것과 같은 의미다
2 3 0 3 1
-10은 꼴찌니까 0 .. 뭐 이런느낌으로 말이다
근데 이제 서로 다른 좌표 Xj의 개수와 같아야 한다 라는 표현이 있는데 이는,
1000 999 1000 999 1000 999
같은 값이 있다면 1번만 개수를 세야한다
1 0 1 0 1 0
요런 개념을 이해하고 문제를 풀어보자
요기서 필요한건 dictionary 개념이 추가로 필요하다
php 같은 경우 array가 원래 key value인 경우도 있고 아닌 경우도 있는데,,
js는 key value인 경우의 형태가 dictionary 개념 인듯?
// readline 모듈보다는 fs를 이용해 파일 전체를 읽어 들여 처리하기
const fs = require('fs')
const getInput = (filePath) => {
return fs
.readFileSync(filePath)
.toString()
.trim()
.split(/\n/);
}
const input = getInput('/dev/stdin'); // 제출시 여기 '/dev/stdin' 으로 변경
let count = Number(input[0]);
let dataOrg = input[1].split(' ').map(Number);
// 중복제거
data = [...new Set(dataOrg)]; // 중복제거
data.sort(function(a,b){
if(a>b) return 1;
else if(a<b) return -1;
else return 0;
});
// dictionary 형태로 mapping
let myMap = new Map();
for(let i = 0; i < data.length ; i++){
myMap.set(data[i],i);
}
let answer= "";
for(p of dataOrg)
{
answer += myMap.get(p) + " ";
}
console.log(answer);
'알고리즘 > 백준' 카테고리의 다른 글
[백준] js 1427 (0) | 2024.02.12 |
---|---|
[백준] js 10814 - compare 함수 까먹지 말기 (0) | 2024.02.12 |
[백준] js 1181 (0) | 2024.02.12 |
[백준] js 11651 (0) | 2024.02.12 |
[백준] js 11650 (0) | 2024.02.12 |