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는 1이상 6이하의 정수입니다.| a | b | c | result |
|---|---|---|---|
| 2 | 6 | 1 | 9 |
| 5 | 3 | 3 | 473 |
| 4 | 4 | 4 | 110592 |
입출력 예 #1
입출력 예 #2
입출력 예 #3
return (a==b&&a==c&&b==c ? (a+b+c)*(a*a+b*b+c*c)*(a*a*a+b*b*b+c*c*c)
: (a!=b&&a!=c&&b!=c ? a+b+c : (a+b+c)*(a*a+b*b+c*c)));
삼항연산자 두번, 왜 abc다 비교해야되는건데;;;
다른풀이
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;
let result = a + b + c
if (a === b || a === c || b === c) {
result *= a ** 2 + b ** 2 + c ** 2
}
if (a === b && a === c) {
result *= a ** 3 + b ** 3 + c ** 3
}
return result