JAVA/프로그래머스 코딩 기초 트레이닝

[프로그래머스, LV.0] 주사위 게임 2

sundori 2023. 5. 17. 18:39

목차

     

    #1 주사위 게임 2

    문제 설명

    1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 abc라고 했을 때 얻는 점수는 다음과 같다.

     

    • 세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.
    • 세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.
    • 세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.

    세 정수 abc가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.

    제한사항

    • a, b, c는 1이상 6이하의 정수이다.

    입출력 예

     

    입출력 예 #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 합니다.

    #2 코드 및 알고리즘

    class Solution {
        public int solution(int a, int b, int c) {
            int sum = 1;
            if(a == b && b == c){
                for(int i = 1; i <= 3; i++){
                sum *= Math.pow(a,i) + Math.pow(b,i) + Math.pow(c,i);
                } return sum;
            } else if(a == b){
                for(int i = 1; i <= 2; i++){
                sum *= Math.pow(a,i) + Math.pow(b,i) + Math.pow(c,i);
                } return sum;
            } else if(b == c){
                for(int i = 1; i <= 2; i++){
                sum *= Math.pow(a,i) + Math.pow(b,i) + Math.pow(c,i);
                } return sum;
            } else if(c == a){
                for(int i = 1; i <= 2; i++){
                sum *= Math.pow(a,i) + Math.pow(b,i) + Math.pow(c,i);
                } return sum;
            } else {
                return a + b + c;
            }     
        }
    }
    ------------------------------------------------
    정확성  테스트
    테스트 1 〉	통과 (0.08ms, 73.1MB)
    테스트 2 〉	통과 (0.04ms, 81.9MB)
    테스트 3 〉	통과 (0.04ms, 75.1MB)
    테스트 4 〉	통과 (0.02ms, 71.2MB)
    테스트 5 〉	통과 (0.06ms, 74.8MB)
    테스트 6 〉	통과 (0.04ms, 86.9MB)
    테스트 7 〉	통과 (0.03ms, 76.2MB)
    테스트 8 〉	통과 (0.05ms, 76MB)
    테스트 9 〉	통과 (0.03ms, 69.6MB)
    테스트 10 〉	통과 (0.03ms, 65.9MB)
    테스트 11 〉	통과 (0.04ms, 70.9MB)
    테스트 12 〉	통과 (0.04ms, 82.9MB)
    테스트 13 〉	통과 (0.04ms, 73.8MB)
    테스트 14 〉	통과 (0.04ms, 77.9MB)
    테스트 15 〉	통과 (0.06ms, 75.4MB)
    테스트 16 〉	통과 (0.04ms, 74.3MB)
    테스트 17 〉	통과 (0.02ms, 81.5MB)
    테스트 18 〉	통과 (0.02ms, 78.1MB)
    테스트 19 〉	통과 (0.06ms, 78.8MB)
    테스트 20 〉	통과 (0.05ms, 79.3MB)
    테스트 21 〉	통과 (0.02ms, 69.7MB)
    테스트 22 〉	통과 (0.03ms, 71.4MB)
    테스트 23 〉	통과 (0.04ms, 65.4MB)
    테스트 24 〉	통과 (0.04ms, 64.4MB)
    테스트 25 〉	통과 (0.08ms, 76.5MB)
    테스트 26 〉	통과 (0.03ms, 73.7MB)
    테스트 27 〉	통과 (0.06ms, 73.1MB)
    테스트 28 〉	통과 (0.05ms, 77.7MB)
    테스트 29 〉	통과 (0.03ms, 73.4MB)
    테스트 30 〉	통과 (0.03ms, 70.5MB)
    테스트 31 〉	통과 (0.02ms, 78.8MB)
    테스트 32 〉	통과 (0.03ms, 75.9MB)
    테스트 33 〉	통과 (0.05ms, 68.7MB)
    테스트 34 〉	통과 (0.01ms, 72.4MB)
    테스트 35 〉	통과 (0.04ms, 79.7MB)
    테스트 36 〉	통과 (0.04ms, 78.4MB)
    테스트 37 〉	통과 (0.02ms, 69.4MB)
    테스트 38 〉	통과 (0.05ms, 76.2MB)
    테스트 39 〉	통과 (0.04ms, 73.9MB)
    테스트 40 〉	통과 (0.03ms, 73.6MB)
    테스트 41 〉	통과 (0.03ms, 79.1MB)
    테스트 42 〉	통과 (0.04ms, 73.6MB)
    테스트 43 〉	통과 (0.05ms, 80.4MB)
    테스트 44 〉	통과 (0.04ms, 77.1MB)
    테스트 45 〉	통과 (0.02ms, 72.5MB)
    테스트 46 〉	통과 (0.04ms, 75.7MB)
    테스트 47 〉	통과 (0.04ms, 76.7MB)
    테스트 48 〉	통과 (0.02ms, 69.4MB)
    테스트 49 〉	통과 (0.04ms, 72.8MB)
    테스트 50 〉	통과 (0.11ms, 73.2MB)
    테스트 51 〉	통과 (0.03ms, 74.8MB)
    테스트 52 〉	통과 (0.02ms, 68.4MB)
    테스트 53 〉	통과 (0.03ms, 76.1MB)
    테스트 54 〉	통과 (0.03ms, 69.5MB)
    테스트 55 〉	통과 (0.05ms, 75.2MB)
    테스트 56 〉	통과 (0.05ms, 68.7MB)
    채점 결과
    정확성: 100.0
    합계: 100.0 / 100.0

    풀이:

    • a = b = c인 경우, a = b / b = c/ c= a인 경우, a != b != c인 경우.
    • a = b = c인 경우
      for문을 이용해 3번 반복하며 Math.pow를 이용해 a, b, c 각각 제곱을 구해 더한다.
    • a = b / b = c/ c= a인 경우
      for문을 이용해 2번 반복하며 Math.pow를 이용해 a, b, c 각각 제곱을 구해 더한다.
    • a != b != c인 경우
      a + b + c의 결과를 반환한다.
    class Solution { // 위의 코드와 똑같은 원리이다.
        public int solution(int a, int b, int c) {
            if( a == b && b == c && c == a)
                return (int)((Math.pow(a,1) * 3) * (Math.pow(a,2) * 3) * (Math.pow(a,3) * 3));
            else if(a==b||a==c||b==c)
                return (a + b + c) * (int)(Math.pow(a,2) + Math.pow(b,2) + Math.pow(c,2));
            else 
                return (a + b + c);
        }
    }
    728x90