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

KIMYEONGJUN·2026년 8월 8일
post-thumbnail

문제

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

1부터 6까지 숫자가 적힌 주사위가 두 개 있습니다.
두 주사위를 굴렸을 때 나온 숫자를 각각 a, b라고 했을 때 얻는 점수는 다음과 같습니다.
a와 b가 모두 홀수라면 a2 + b2 점을 얻습니다.
a와 b 중 하나만 홀수라면 2 × (a + b) 점을 얻습니다.
a와 b 모두 홀수가 아니라면 |a - b| 점을 얻습니다.
두 정수 a와 b가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.

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

solution 메서드에 두 개의 정수 a, b를 입력받는다.
먼저 a와 b가 홀수인지 판단하기 위해 각각 (a % 2 == 1), (b % 2 == 1) 조건을 평가하여 isAOdd, isBOdd라는 불리언 변수에 저장한다.
만약 a와 b가 모두 홀수(isAOdd && isBOdd)라면, 점수로 a * a + b * b 즉, 두 수의 제곱 합을 반환한다.
그렇지 않고 둘 중 하나만 홀수(isAOdd || isBOdd)라면, 점수는 2 * (a + b) 즉, 두 수 합의 두 배를 반환한다.
그 외의 경우, 즉 두 수 모두 홀수가 아닐 때는 Math.abs(a - b)를 사용해 두 수의 차이 절댓값을 점수로 반환한다.
main 메서드에서는 이 solution 메서드를 호출하는 객체 Main106를 생성하고, 세 가지 테스트 케이스를 입력하여 결과를 출력한다.
각각의 출력은 주어진 조건에 따라 정상적으로 계산된 점수를 보여 준다.
예를 들면 3과 5는 둘 다 홀수여서 34, 6과 1은 하나만 홀수여서 14, 2와 4는 둘 다 홀수가 아니므로 2가 출력된다.

코드로 구현

class Solution {
    public int solution(int a, int b) {
        int answer = 0;
        boolean isAOdd = (a % 2 == 1);
        boolean isBOdd = (b % 2 == 1);

        if (isAOdd && isBOdd) {
            answer = a * a + b * b;
        } else if (isAOdd || isBOdd) {
            answer = 2 * (a + b);
        } else {
            answer = Math.abs(a - b);
        }

        return answer;
    }
}

프로그래머스 코드

package programmers.programmers2;

// 프로그래머스 주사위 게임 1
public class Main106 {
    public int solution(int a, int b) {
        int answer = 0;
        boolean isAOdd = (a % 2 == 1);
        boolean isBOdd = (b % 2 == 1);

        if (isAOdd && isBOdd) {
            answer = a * a + b * b;
        } else if (isAOdd || isBOdd) {
            answer = 2 * (a + b);
        } else {
            answer = Math.abs(a - b);
        }

        return answer;
    }

    public static void main(String[] args) {
        Main106 sol = new Main106();

        // 테스트 예시
        System.out.println(sol.solution(3, 5)); // 34
        System.out.println(sol.solution(6, 1)); // 14
        System.out.println(sol.solution(2, 4)); // 2
    }
}

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

마무리

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

profile
Junior backend developer

0개의 댓글