ALGORITHM/코딩 기초 트레이닝

[프로그래머스]주사위 게임 2

jki09871 2024. 7. 31. 09:48

 

아무리 쉬운 코드도 리뷰 합니다.
문제 설명
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
예제 1번에서 세 주사위 숫자가 모두 다르므로 2 + 6 + 1 = 9점을 얻습니다. 
따라서 9를 return 합니다.

입출력 예 #2
예제 2번에서 두 주사위 숫자만 같으므로 
(5 + 3 + 3) × (52 + 32 + 32 ) = 11 × 43 = 473점을 얻습니다. 
따라서 473을 return 합니다.

입출력 예 #3
예제 3번에서 세 주사위 숫자가 모두 같으므로 
(4 + 4 + 4) × (42 + 42 + 42 ) × (43 + 43 + 43 ) = 12 × 48 × 192 = 110,592점을 얻습니다. 
따라서 110592를 return 합니다.
 ----------------------------------------------------------------------------------
class Solution {
    public int solution(int a, int b, int c) {
        int sum = a + b + c;
        int sumOfSquares = a * a + b * b + c * c;
        int sumOfCubes = a * a * a + b * b * b + c * c * c;
        
        if (a == b && b == c) {
            // 세 숫자가 모두 같은 경우
            return sum * sumOfSquares * sumOfCubes;
        } else if (a == b || b == c || a == c) {
            // 두 숫자가 같은 경우
            return sum * sumOfSquares;
        } else {
            // 세 숫자가 모두 다른 경우
            return sum;
        }
    }
}

설명

  1. 변수 초기화:
    • sum: 주사위 세 숫자의 합을 저장합니다.
    • sumOfSquares: 주사위 숫자의 제곱의 합을 저장합니다.
    • sumOfCubes: 주사위 숫자의 세제곱의 합을 저장합니다.
  2. 세 숫자가 모두 같은 경우:
    • 세 숫자가 모두 같을 때는sum * sumOfSquares * sumOfCubes 로 점수를 계산합니다.
  3. 두 숫자가 같은 경우:
    • 세 숫자 중 두 숫자가 같을 때는 sum * sumOfSquares 로 점수를 계산합니다.
  4. 세 숫자가 모두 다른 경우:
    • 세 숫자가 모두 다를 때는 sum 로 점수를 계산합니다.

중요코드

  • if(조거문)에 조건을 잘 설정 하는게 매우 중요합니다.

실행결과

정확성 테스트
테스트 1 통과 (0.03ms, 77MB)
테스트 2 통과 (0.02ms, 74.4MB)
테스트 3 통과 (0.03ms, 74.4MB)
테스트 4 통과 (0.03ms, 77.6MB)
테스트 5 통과 (0.02ms, 75.4MB)
테스트 6 통과 (0.02ms, 73.3MB)
테스트 7 통과 (0.04ms, 78.8MB)
테스트 8 통과 (0.02ms, 68.3MB)
테스트 9 통과 (0.02ms, 71.6MB)
테스트 10 통과 (0.02ms, 77.5MB)
테스트 11 통과 (0.03ms, 77.2MB)
테스트 12 통과 (0.02ms, 73MB)
테스트 13 통과 (0.03ms, 74.7MB)
테스트 14 통과 (0.03ms, 74.3MB)
테스트 15 통과 (0.01ms, 76.7MB)
테스트 16 통과 (0.03ms, 74.7MB)
테스트 17 통과 (0.02ms, 76.6MB)
테스트 18 통과 (0.03ms, 73.2MB)
테스트 19 통과 (0.01ms, 73.6MB)
테스트 20 통과 (0.02ms, 73.7MB)
테스트 21 통과 (0.02ms, 75.3MB)
테스트 22 통과 (0.02ms, 75.2MB)
테스트 23 통과 (0.03ms, 69.7MB)
테스트 24 통과 (0.01ms, 75.9MB)
테스트 25 통과 (0.01ms, 76.6MB)
테스트 26 통과 (0.03ms, 73.8MB)
테스트 27 통과 (0.01ms, 75.2MB)
테스트 28 통과 (0.01ms, 74.1MB)
테스트 29 통과 (0.02ms, 76.4MB)
테스트 30 통과 (0.02ms, 86.7MB)
테스트 31 통과 (0.02ms, 67.7MB)
테스트 32 통과 (0.02ms, 73.2MB)
테스트 33 통과 (0.03ms, 79.1MB)
테스트 34 통과 (0.02ms, 70.3MB)
테스트 35 통과 (0.01ms, 77.5MB)
테스트 36 통과 (0.03ms, 76.3MB)
테스트 37 통과 (0.04ms, 78.5MB)
테스트 38 통과 (0.03ms, 77.7MB)
테스트 39 통과 (0.02ms, 74.4MB)
테스트 40 통과 (0.01ms, 74.7MB)
테스트 41 통과 (0.03ms, 77.7MB)
테스트 42 통과 (0.02ms, 71.1MB)
테스트 43 통과 (0.03ms, 69.5MB)
테스트 44 통과 (0.01ms, 75MB)
테스트 45 통과 (0.03ms, 83.3MB)
테스트 46 통과 (0.02ms, 74.8MB)
테스트 47 통과 (0.03ms, 74.7MB)
테스트 48 통과 (0.02ms, 77.5MB)
테스트 49 통과 (0.02ms, 77.4MB)
테스트 50 통과 (0.02ms, 78.2MB)
테스트 51 통과 (0.03ms, 73.7MB)
테스트 52 통과 (0.02ms, 77.5MB)
테스트 53 통과 (0.02ms, 77MB)
테스트 54 통과 (0.03ms, 81.5MB)
테스트 55 통과 (0.02ms, 77.1MB)
테스트 56 통과 (0.03ms, 79.3MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0