코딩테스트/프로그래머스

[프로그래머스] Lv.0 주사위 게임2(Java)

선SEON 2023. 10. 25. 19:16

1. 문제

 

2. 제출 답안

class Solution {
    public int solution(int a, int b, int c) {
            if (a == b && b == c) { // 세 주사위가 모두 같은 숫자
                return (a + b + c) * (a * a + b * b + c * c) * (a * a * a + b * b * b + c * c * c);
            } else if (a == b || b == c || a == c) { // 두 개의 숫자가 같고 나머지가 다르면
                return (a + b + c) * (a * a + b * b + c * c);
            } else { // 세 개가 모두 다른 경우
                return a + b + c;
            }
      }
}

 

3. 다른 풀이

class Solution {
    public int solution(int a, int b, int c) {
        int answer = 1;

        int count = 1;
        if(a == b || a == c || b == c) { // 두 개의 주사위가 같은 경우
            count++;
        }

        if(a == b && b == c) { // 세 개의 주사위가 같은 경우
            count++;
        }

        for(int i = 1; i <= count; i++) { // count만큼 반복
            answer *= (pow(a,i)+pow(b,i)+pow(c,i)); // 각 주사위 값을 i제곱한 합이 계산됨. 이 값이 answer에 곱해짐.
        }

        return answer;
    }
	
    // 재귀 함수
    private int pow(int a, int b) { // a를 b제곱한 값을 반환
        if(b == 0) return 1;
        return a * pow(a, b-1);
    }
}

Math.pow 함수는 숫자의 거듭제곱 연산을 수행하는 함수이다.

private int pow(int a, int b) { // 첫 번째 인수가 밑, 두 번째 인수가 지수
    if (b == 0) return 1;  // 지수가 0이면 1을 반환
    return a * pow(a, b - 1);  // 재귀적으로 a를 (b-1)번 곱함
}