📌 문제
📌 풀이
function solution(a, b, c, d) {
const numbers = [a, b, c, d];
const freqMap = {};
for (let num of numbers) {
freqMap[num] = (freqMap[num] || 0) + 1;
}
const counts = Object.values(freqMap);
const uniqueNumbers = Object.keys(freqMap).map(Number);
if (counts.includes(4)) {
const p = uniqueNumbers
return 1111 * p
}
if (counts.includes(3)) {
const p = parseInt(Object.keys(freqMap).find(key => freqMap[key] === 3));
const q = parseInt(Object.keys(freqMap).find(key => freqMap[key] === 1));;
return Math.pow(10 * p + q, 2)
}
if (counts.filter(count => count === 2).length === 2) {
const [p, q] = uniqueNumbers.sort((a,b) => b - a);
return (p + q) * Math.abs(p - q);
}
if (counts.includes(2)) {
const p = parseInt(Object.keys(freqMap).find(key => freqMap[key] === 2));
const others = uniqueNumbers.filter(num => num !== p);
const [q, r] = others;
return q * r;
}
return Math.min(...numbers);
}
- for..of 반복문을 통해 각 숫자의 출현 빈도를
freqMap
객체에다가 담는다 - Object.values 와 Object.keys 를 통해 객체의 key, value 각각을 담은 배열을 통해 각 조건을 확인하고 계산한다
Math.pow(base, exponent)
: base 에 exponent 를 제곱한 값을 반환한다Math.abs()
: 숫자의 절대 값을 반환한다Math.min()
: 매개변수로 주어진 숫자 중 가장 작은 수를 반환한다
728x90
'배움 기록 > 코테 연습' 카테고리의 다른 글
[프로그래머스] 배열 만들기 4 : JavaScript (1) | 2025.01.18 |
---|---|
[프로그래머스] 수열과 구간 쿼리 2 : JavaScript (0) | 2024.12.30 |
[프로그래머스] 수열과 구간 쿼리 3 : JavaScript (1) | 2024.12.27 |
[프로그래머스] 수 조작하기 2 : JavaScript (0) | 2024.11.03 |
[프로그래머스] 이어 붙인 수 : JavaScript (0) | 2024.07.09 |
댓글