주사위 게임 2

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 함수를 작성해 주세요.

주사위 게임 2Lv.0

181930

https://school.programmers.co.kr/learn/courses/30/lessons/181930

해설

다른 0단계와 달리 가장 생각을 많이 했던 문제입니다. 가능한 쉽게 풀려고 노력했지만, 가장 단순하게 풀었다고 생각합니다.

다행히 주사위가 3개라는 제약조건이 있었지만, 수가 늘어나면 해당 풀이과정으로 해결할 수 없다고 생각합니다.

  • Name
    변수 정의
    Type
    Description
    • sumOfNumbers: 세 숫자의 합 (a + b + c)

    • sumOfSquares: 세 숫자의 제곱의 합 (a² + b² + c²)

    • sumOfCubes: 세 숫자의 세제곱의 합 (a³ + b³ + c³)

  • Name
    조건문
    Type
    Description
    • 만약 세 숫자가 모두 같다면 (a === b && b === c), 세 숫자의 합, 제곱의 합, 세제곱의 합을 모두 곱한 값을 반환합니다.

    • 만약 세 숫자 중 어느 두 숫자가 같다면 (a === b || b === c || a === c), 세 숫자의 합과 제곱의 합을 곱한 값을 반환합니다.

    • 위의 두 조건에 모두 해당하지 않으면, 세 숫자의 합만 반환합니다.

주어진 세 숫자의 관계에 따라 다양한 계산 결과를 반환합니다. 예를 들어, 모든 숫자가 같다면 모든 합들의 곱을 반환하고, 두 숫자만 같다면 합과 제곱의 합의 곱을 반환합니다. 그렇지 않으면 단순히 숫자들의 합을 반환합니다.

주사위 게임 2

function solution(a, b, c) {
    var sumOfNumbers = a + b + c;
    var sumOfSquares = Math.pow(a, 2) + Math.pow(b, 2) + Math.pow(c, 2);
    var sumOfCubes = Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3);

    if (a === b && b === c) {
        return sumOfNumbers * sumOfSquares * sumOfCubes;
    } else if (a === b || b === c || a === c) {
        return sumOfNumbers * sumOfSquares;
    } else {
        return sumOfNumbers;
    }
}