
문제 설명
1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.
세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return하는 solution 함수를 작성해주세요.
제한사항
입출력 예
| a | b | c | result |
|---|---|---|---|
| 2 | 6 | 1 | 9 |
| 5 | 3 | 3 | 473 |
| 4 | 4 | 4 | 110592 |
입출력 예 설명
입출력 예 #1
예제 1번에서 세 주사위 숫자가 모두 다르므로 2 + 6 + 1 = 9점을 얻습니다. 따라서 9를 return 합니다.
입출력 예 #2
예제 2번에서 두 주사위 숫자만 같으므로 (5 + 3 + 3) × (5² + 3² + 3²) = 11 × 43 = 473점을 얻습니다. 따라서 473을 return 합니다.
입출력 예 #3
예제 3번에서 세 주사위 숫자가 모두 같으므로 (4 + 4 + 4) × (4² + 4² + 4²) × (4³ + 4³ + 4³) = 12 × 48 × 192 = 110,592점을 얻습니다. 따라서 110592를 return 합니다.
function solution(a, b, c) {
const sum = a + b + c; // 세 주사위 수의 합
const sumOfSquares = a**2 + b**2 + c**2; // 세 수의 제곱 합
const sumOfCubes = a**3 + b**3 + c**3; // 세 수의 세제곱 합
// a, b, c가 모두 같은지 확인
if (a === b && b === c) {
return sum * sumOfSquares * sumOfCubes;
}
// a, b, c 중 정확히 두 수만 같은지 확인
// 방법 1: 집합(set)을 이용해 유일한 값의 개수 확인
// let uniqueCount = new Set([a,b,c]).size;
// uniqueCount가 2라면 두 수만 같다는 의미
// 방법 2: 조건문 직접 사용
if (a === b || b === c || a === c) {
return sum * sumOfSquares;
}
// 세 수 모두 다를 경우
return sum;
}
sum = a + b + c: 세 주사위에서 나온 수를 모두 더합니다.sumOfSquares = a² + b² + c²: 제곱값들의 합을 구합니다.sumOfCubes = a³ + b³ + c³: 세제곱값들의 합을 구합니다.a === b && b === c 만약 세 수가 모두 같다면 문제에서 요구한 식 (sum) × (sumOfSquares) × (sumOfCubes)를 반환합니다.if (a === b || b === c || a === c) {
// 이 시점에서 모두 같지는 않으므로
// 정확히 두 수만 같은 경우입니다.
return sum * sumOfSquares;
}
이 경우 (sum) × (sumOfSquares)를 반환합니다.(a + b + c) 값을 반환합니다.