1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a
, b
, c
라고 했을 때 얻는 점수는 다음과 같습니다.
a
+ b
+ c
점을 얻습니다.a
+ b
+ c
) × (a
2 + b
2 + c
2 )점을 얻습니다.a
+ b
+ c
) × (a
2 + b
2 + c
2 ) × (a
3 + b
3 + c
3 )점을 얻습니다.세 정수 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