주사위 게임2
https://school.programmers.co.kr/learn/courses/30/lessons/181930
📔 문제 설명
1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.
- 세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.
- 세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.
- 세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.
세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
💡 입출력 예
a | b | c | result |
---|---|---|---|
2 | 6 | 1 | 9 |
5 | 3 | 3 | 473 |
4 | 4 | 4 | 110592 |
💻내가 작성한 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function solution(a, b, c) {
const calcPow = (count) => {
var sum = 1;
for (let i = 1; i <= count; i++) {
sum *= Math.pow(a, i) + Math.pow(b, i) + Math.pow(c, i);
}
return sum;
};
if (a !== b && b !== c && a !== c) return a + b + c;
if ((a === b && a !== c) || (a === c && a !== b) || (b === c && a !== b))
return calcPow(2);
if (a === b && a === c) return calcPow(3);
}
💻다른 사람 코드
new Set을 이용해서 중복 제거, calculate함수 만들어서 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const solution = (a, b, c) => {
const set = new Set([a, b, c]);
switch ([...set].length) {
case 1:
return calculate([a, b, c], 3);
case 2:
return calculate([a, b, c], 2);
case 3:
return calculate([a, b, c]);
}
};
const calculate = (inc, n = 1) => {
const [a, b, c] = inc;
let result = 1;
for (let i = 1; i <= n; i++) {
result *= Math.pow(a, i) + Math.pow(b, i) + Math.pow(c, i);
}
return result;
};
This post is licensed under CC BY 4.0 by the author.