c c++ 언어 공부

백준 2476번 : 주사위 게임 (C 언어)

Code C 2023. 10. 31. 12:49

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

 

2476번: 주사위 게임

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

www.acmicpc.net

Code:

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
#include <stdio.h>
#include <limits.h>
 
int main() {
    int t;
    scanf("%d"&t);
    int a, b, c;
    int max = INT_MIN;
    while (t--)
    {
        int cost = 0;
        scanf("%d %d %d"&a, &b, &c);
        if (a == b && b == c && a==c)
        {
            cost = 10000 + a * 1000;
        }
        else if(a==b&&a!=c&&b!=c)
        {
            cost = 1000 + a * 100;
        }
        else if (a == c && a != b && b != c)
        {
            cost = 1000 + a * 100;
        }
        else if (c == b && a != c && b != a)
        {
            cost = 1000 + b * 100;
        }
        else
        {
            int cnt;
            cnt = (a > b) ? a : b;
            cnt = (cnt > c) ? cnt : c;
            cost = cnt * 100;
        }
        if (max < cost)
        {
            max = cost;
        }
    }
    printf("%d", max);
}
cs

문제 설명:

주어진 문제는 주사위 게임에서 다양한 규칙에 따라 상금을 받는 게임을 N명의 참가자가 플레이하고, 그 중 가장 많은 상금을 받은 사람의 상금을 찾는 것을 요구합니다. 각 참가자는 3개의 주사위를 던집니다. 이 때, 상금을 계산하는 규칙은 다음과 같습니다:

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

가장 많은 상금을 받은 사람을 찾아야 합니다.

코드 설명:

코드는 각 참가자의 주사위 결과를 받고, 주어진 규칙에 따라 상금을 계산한 후, 최대 상금을 가진 참가자를 찾는 작업을 수행합니다. 다음은 코드의 주요 부분을 설명합니다:

  1. t를 사용하여 참가자 수를 입력 받습니다.
  2. 반복문을 사용하여 각 참가자의 주사위 결과를 입력 받고 상금을 계산합니다.
  3. 조건문을 사용하여 주어진 규칙에 따라 상금을 계산하며, 이를 cost 변수에 저장합니다.
  4. max 변수를 사용하여 현재까지 가장 큰 상금을 추적합니다.
  5. 각 참가자마다 cost를 max와 비교하여, 더 큰 상금을 가진 참가자가 나타날 때마다 max를 업데이트합니다.
  6. 모든 참가자에 대한 반복문이 끝나면, max에 저장된 값은 가장 많은 상금을 받은 참가자의 상금을 나타냅니다.

결과를 출력할 때는 max 값을 출력하면 됩니다.