https://www.acmicpc.net/problem/8979
로직
- 정렬 사용
- 금,은,동 순서대로 중요도로 정렬
- 정렬 완료 후 국가 K를 찾은 후, 같은 등수 나라가 있는지 확인하는 방식
const solution = (N,K,arr) =>{
arr.sort((a,b)=>{
if (a[1] !== b[1]) return b[1] - a[1];
if (a[2] !== b[2]) return b[2] - a[2];
return b[3] - a[3];
})
for (let rank=0; rank<=N;rank++){
const [idx,gold,silver,bronze] = arr[rank];
if (idx === K){
for (let totalRank=rank-1;totalRank>=0;totalRank--){
const data = arr[totalRank];
if (gold === data[1] && silver === data[2] && bronze === data[3]) continue
else return totalRank+2
}
return 1
}
}
}
// 입력
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let [original_N,N,K] = [-1,-1,-1];
let arr;
rl.on('line', (line)=>{
if (N==-1){
[N,K] = line.split(' ').map(Number);
original_N = N;
arr = Array.from({length:N+1});
} else if(N == 0){
rl.close();
} else {
N --;
const [i,gold,silver,bronze] = line.split(' ').map(Number);
arr[i] = [i,gold,silver,bronze];
}
});
rl.on('close',()=>{
const ans = solution(original_N,K,arr)
console.log(ans)
})
후기
- python의 정렬에 익숙해서 javascript의 정렬 방식이 너무 불편하게 느껴졌다. arr.sort(key= lamda x:(x[0],x[1])
const data = [1,2,3];
일경우data === [1,2,3]
이 false이기에 금은동 개수가 같은지를 && 연산자로 연결하는데 좀 불편하게 느껴졌다.
'알고리즘 문제 풀이 > Javascript' 카테고리의 다른 글
[node.js] 백준 1449 수리공 항승 (0) | 2025.02.11 |
---|---|
[node.js] 백준 16401 과자 나눠주기 (0) | 2025.02.04 |
[node.js] 백준 13023 ABCDE (0) | 2025.01.22 |
[node.js] 백준 1309 동물원 (1) | 2025.01.17 |
[node.js] 1347 미로만들기 (0) | 2025.01.15 |