CS/알고리즘_문제풀이(자바)

주사위 게임

Jedy_Kim 2021. 8. 25. 14:35
728x90

문제

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

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

예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3 100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2 1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그 중 가장 큰 값이 6이므로 6 * 100으로 계산되어 600원을 상금으로 받게 된다.

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

 

입력

첫째 줄에는 참여하는 사람 수 이 주어지고 그 다음 줄부터 N개의 줄에 사람들이 주사위를 던진 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.

 

출력

첫째 줄에 가장 많은 상금을 받은 사람의 상금을 출력한다.

 

예제 입력

3
3 3 6
2 2 2
6 2 5

예제 출력

12000

 

#코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import java.util.*;
import java.io.*;
 
public class Main{
    public static void main(String[] args) throws Exception {
 
      // Please Enter Your Code Here
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
      StringTokenizer st = new StringTokenizer(br.readLine());
      int N = Integer.parseInt(st.nextToken());
      
      int[][] myArr = new int[N][3];
      
      for(int i = 0; i < N; i++) {
        st = new StringTokenizer(br.readLine());
        for(int j = 0; j < 3; j++) {
          myArr[i][j] = Integer.parseInt(st.nextToken());
        }
      }
      
      int maxResVal = -1;
      int resVal    = 0;
      for(int i = 0; i < myArr.length; i++) {
        
        int cnt = 0;
        int A = myArr[i][0];
        int B = myArr[i][1];
        int C = myArr[i][2];
        
        int sameVal = 0
        if(A == B) {
          cnt++;  
          sameVal = A;
        } 
        if(B == C) {
          cnt++;
          sameVal = B;
        }
        if(A == C) {
          cnt++;
          sameVal = C;
        }
        
        if(cnt == 1) {
          cnt = 2;
        }
        
        if(cnt == 2) {
          resVal = (1000 + (sameVal*100));
        } else if(cnt == 3) {
          resVal = (10000 + (sameVal*1000));
        } else if(cnt == 0) {
          
          int maxVal  = -1;
          for(int j = 0; j < 3; j++) {
            if(myArr[i][j] > maxVal) {
              maxVal = myArr[i][j];
            }  
          }
          resVal = (maxVal*100);
        } 
        
        if(maxResVal < resVal) {
          maxResVal = resVal;
        }
        
      }
      System.out.println(maxResVal); 
    }
}
cs

 

반응형

'CS > 알고리즘_문제풀이(자바)' 카테고리의 다른 글

array 1  (0) 2021.08.26
숫자 피라미드  (0) 2021.08.25
Card game  (0) 2021.08.25
점수 계산  (0) 2021.08.25
두 번째 최솟값 찾기  (0) 2021.08.25