suheang

[백준] | JAVA, 자바 | 2476번 - 주사위 게임 본문

알고리즘

[백준] | JAVA, 자바 | 2476번 - 주사위 게임

suheang 2024. 5. 18. 22:40

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

 


문제 요약 :

1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.

  1. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 
  2. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 
  3. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.  

N(2 ≤ N ≤ 1,000)명이 주사위 게임에 참여하였을 때, 가장 많은 상금을 받은 사람의 상금을 출력하는 프로그램을 작성


문제 풀이 :

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int max = 0;
        int[] dice = new int[3];
        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            dice[0] = Integer.parseInt(st.nextToken());
            dice[1] = Integer.parseInt(st.nextToken());
            dice[2] = Integer.parseInt(st.nextToken());
            Arrays.sort(dice);
            int sum = 0;
            if (dice[0] == dice[1] && dice[1] == dice[2]) {
                sum = 10000 + dice[0] * 1000;
            } else if (dice[0] == dice[1] || dice[0] == dice[2]) {
                sum = 1000 + dice[0] * 100;
            } else if (dice[1] == dice[2]){
                sum = 1000 + dice[1] * 100;
            } else {
                sum = dice[2] * 100;
            }

            if (max < sum) {
                max = sum;
            }
        }
        System.out.println(max);
    }
}

 

1. 게임에 참여한 인원 n 입력받기

2. 가장 많은 상금을 받은 사람의 상금을 저장할 변수 max 생성, 3개의 주사위의 값을 저장할 배열 dice 생성

3. n 만큼 3개의 주사위 값을 입력받음

4. 입력받은 주사위 값을 정렬

5. 상금의 값을 저장할 변수 sum 생성

6. 1번 규칙, 2번 규칙, 3번 규칙에 해당하는지 확인하고 해당하는 계산을 진행한 뒤 sum에 저장

6 - 1. 2번 규칙의 경우 어떤 수가 같은지 모르기 때문에 조건식을 두 개를 활용해서 계산함

7. 만약 sum이 max보다 크다면 max의 값을 sum으로 변경

8. 저장된 max 출력