문제
https://school.programmers.co.kr/learn/courses/30/lessons/181916?language=javascript
풀이
주사위값을 key, 해당 주사위 값의 갯수를 value로 객체를 만든다.
function solution(a, b, c, d) {
//{주사위값 : 갯수}로 정리
const diceValue = [a, b, c, d].reduce((acc, cur) => {
acc[cur] = acc[cur] ? acc[cur] + 1 : 1;
return acc;
}, {});
return diceValue;
}
그 다음 이 객체를 이용해서 조건에 맞는 값을 구해 반환해준다.
function solution(a, b, c, d) {
//{주사위값 : 갯수}로 정리
const dice = [a, b, c, d].reduce((acc, cur) => {
acc[cur] = acc[cur] ? acc[cur] + 1 : 1;
return acc;
}, {});
// 주사위 value 순으로 정렬
const diceValue = Object.keys(dice).sort((a, b) => dice[b] - dice[a]);
//주사위값이 4개가 같은 경우
if (dice[diceValue[0]] === 4) return Number(diceValue[0]) * 1111;
//세개가 같고 하나가 다른 경우
if (dice[diceValue[0]] === 3) return Math.pow(Number(diceValue[0]) * 10 + Number(diceValue[1]), 2);
//두개씩 같고 다른 경우
if (dice[diceValue[0]] === 2 && dice[diceValue[1]] === 2) return (Number(diceValue[0]) + Number(diceValue[1])) * Math.abs(Number(diceValue[0]) - Number(diceValue[1]));
//두개만 같고 나머지가 다른 경우
if (dice[diceValue[0]] === 2) return Number(diceValue[1]) * Number(diceValue[2]);
//모두 다른 경우 가장 작은 key값을 리턴
return Number(diceValue[0]);
}
'개발 > 알고리즘(코딩테스트)' 카테고리의 다른 글
프로그래머스, 자바스크립트) 정수를 나선형으로 배치하기 (0) | 2024.06.16 |
---|---|
프로그래머스, 자바스크립트) 안전지대 (0) | 2024.06.09 |
프로그래머스, 자바스크립트) 분수의 덧셈 (0) | 2024.06.06 |
프로그래머스, 자바스크립트) 연속된 수의 합 (0) | 2024.06.06 |
프로그래머스, 자바스크립트) 다음에 올 숫자 (0) | 2024.05.16 |