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

KIMYEONGJUN·2026년 5월 10일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

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

내가 이 문제를 보고 생각해본 부분

solution 메서드는 세 주사위 눈금 a, b, c를 입력으로 받는다.
먼저 세 숫자의 합을 sum에 저장한다. 그리고 각 숫자의 제곱의 합을 sumSquared에 저장한다.
첫 번째 조건문은 세 숫자가 모두 같은지 확인한다.
모두 같으면 세 숫자의 세제곱 합을 구해 sumCubed에 저장하며, 점수는 sum × sumSquared × sumCubed로 계산해 반환한다.
두 번째 조건문은 세 숫자 중 두 개가 같고 나머지 하나가 다른 경우로 반응한다.
이때 점수는 sum × sumSquared로 계산해 반환한다.
마지막으로 세 숫자가 모두 다를 경우에는 단순히 세 숫자의 합인 sum을 반환하도록 한다.

코드로 구현

class Solution {
    public int solution(int a, int b, int c) {
        int sum = a + b + c;
        int sumSquared = a * a + b * b + c * c;

        if (a == b && b == c) {
            int sumCubed = a * a * a + b * b * b + c * c * c;
            return sum * sumSquared * sumCubed;
        } else if (a == b || b == c || a == c) {
            return sum * sumSquared;
        } else {
            return sum;
        }
    }
}

프로그래머스 코드

package programmers;

// 프로그래머스 주사위 게임 2
public class Main15 {
    public static int solution(int a, int b, int c) {
        int sum = a + b + c;
        int sumSquared = a * a + b * b + c * c;

        if (a == b && b == c) {
            int sumCubed = a * a * a + b * b * b + c * c * c;
            return sum * sumSquared * sumCubed;
        } else if (a == b || b == c || a == c) {
            return sum * sumSquared;
        } else {
            return sum;
        }
    }

    public static void main(String[] args) {
        // 예제 테스트: 2, 6, 1 => 결과 9
        System.out.println(solution(2, 6, 1));
        // 예제 테스트: 5, 3, 3 => 결과 473
        System.out.println(solution(5, 3, 3));
        // 예제 테스트: 4, 4, 4 => 결과 110592
        System.out.println(solution(4, 4, 4));
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글