수가 2의 62제곱까지 주어질 수 있으므로 모든 수를 BigInt로 변환해야 한다.
또한 Map을 사용해 주어진 수와 그에 따른 개수를 저장한다.
정렬은 sort 메서드를 이용하여 다음 코드와 같이 BigInt를 정렬하면 에러가 발생한다.
-> 이는 sort 메서드 내부에 직접 비교 조건문을 작성해 해결할 수 있다.
const big = [1n, 2n, 3n, 4n];
big.sort((a,b) => a - b);
console.log(big);
// Error: Cannot convert a BigInt value to a number
최종 코드
function solution(N, input) {
input = input.map(BigInt);
let map = new Map();
for (let i = 0; i < N; i++) {
let card = input[i];
let isExist = map.get(card);
if (isExist) {
map.set(card, isExist + 1);
} else {
map.set(card, 1);
}
}
let sorted = [...map].sort((a, b) => {
if (b[1] < a[1]) return -1;
else if (b[1] > a[1]) return 1;
else {
if (a[0] < b[0]) return -1;
if (a[0] > b[0]) return 1;
else return 0;
}
});
return sorted[0][0].toString();
}
console.log(solution(5, [1, 2, 1, 2, 1])); // 1
console.log(solution(6, [1, 2, 1, 2, 1, 2])); // 1
'Algorithm' 카테고리의 다른 글
[백준] 2623 음악프로그램(JS) (0) | 2022.10.12 |
---|---|
[프로그래머스] 스킬트리(JS) (0) | 2022.09.16 |
[백준] 18428 감시 피하기(JS) (0) | 2022.09.01 |
[백준] 13699 점화식(JS) (0) | 2022.08.19 |