공부하기/백준

[Java] 백준 풀기 1233 - 주사위

XEV 2023. 12. 27. 23:03

자바 백준 1233번

브론즈 2

https://www.acmicpc.net/problem/1233

 

1233번: 주사위

지민이는 주사위 던지기 게임을 좋아하여 어느 날 옆에 있는 동호를 설득하여 주사위 던지기 게임을 하자고 하였다. 총 3개의 주사위가 있다. 그리고 이 주사위는 각각 S1(2 ≤ S1 ≤ 20), S2(2 ≤ S2

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 브루트포스 알고리즘

 

 

 

 

 

코드 보기

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int S1 = sc.nextInt();
        int S2 = sc.nextInt();
        int S3 = sc.nextInt();
        
        // 가장 빈도가 높은 주사위 합을 찾는 함수 호출
        int result = findMostFrequentDiceSum(S1, S2, S3);
        
        // 결과 출력
        System.out.println(result);
    }
    
    // 가장 빈도가 높은 주사위 합을 찾는 함수
    public static int findMostFrequentDiceSum(int S1, int S2, int S3) {
        // 주사위 합의 빈도수를 저장할 배열
        int[] diceSumFrequency = new int[S1 + S2 + S3 + 1];
        
        // 모든 주사위의 눈을 돌면서 합의 빈도수를 계산
        for (int i = 1; i <= S1; i++) {
            for (int j = 1; j <= S2; j++) {
                for (int k = 1; k <= S3; k++) {
                    // 주사위 합의 빈도수 증가
                    diceSumFrequency[i + j + k]++;
                }
            }
        }
        
        int maxFrequency = 0; // 가장 높은 빈도수
        int result = 0; // 결과값을 저장할 변수
        for (int sum = 3; sum <= S1 + S2 + S3; sum++) {
            if (diceSumFrequency[sum] > maxFrequency) {
                // 현재 합의 빈도수가 최댓값보다 크면
                maxFrequency = diceSumFrequency[sum]; // 최댓값 갱신
                result = sum; // 결과값 갱신
            }
        }
        
        // 가장 높은 빈도수를 가진 주사위 합 반환
        return result;
    }
}