[백준 BOJ] 2476번 주사위 게임 (C++/cpp)

2025. 1. 26. 16:36PS (Program Solving)/BOJ (백준)

문제 설명

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

 

백준 BOJ 2476번 주사위 게임 문제 사진

 

접근 방법 - 조건식을 활용한 기초 사칙연산 문제

백준의 2476번 문제는 조건식과 기본적인 사칙연산을 통해 비교적 쉽게 해결할 수 있는 문제이다.

해당 문제는, 여러 사람이 각각 주사위를 굴린 결과가 입력으로 주어질 때 이들이 받을 상금 중 가장 큰 값을 구하여 출력하면 되는 문제이다.

이때, 상금을 책정하는 방식은 아래의 규칙을 따른다. (문제 지문 중 일부를 사진으로 발췌하였다.)

각자 3개의 주사위를 굴리고, 주사위의 눈 중 몇 개의 숫자가 동일한지에 따라 아래처럼 상금이 책정된다.
백준 BOJ 2476번 주사위 게임 문제 사진 (규칙 설명)

조건식을 활용하는 방식과 최댓값을 구하는 방법만 잘 알고 있다면 어렵지 않게 해결할 수 있었을 것으로 예상된다.

자세한 풀이 방식은 아래에 기재해 놓으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 사람의 수(n)를 입력받는다.

 

2) 상금의 최댓값을 저장할 변수 max를 0으로 초기화하여 선언해 둔다.

(최댓값을 발견할 때마다 max의 값을 변동해주어야 하기 때문에, max의 초기값을 가장 작은 값인 0으로 설정해 주었다.)

 

3) n의 크기만큼, 반복문을 수행하여 아래의 연산을 취한다.

- n번째 사람이 굴린 주사위의 눈 숫자(a, b, c)를 각각 입력받는다.

- n번째 사람이 받을 상금을 저장할 변수 result를 미리 선언해 둔다.

- 문제의 지문에 나온 방식대로, 경우의 수를 3가지로 나누어 n번째 사람이 받을 상금을 책정하여 result에 저장한다.

a, b, c가 모두 같다면, 10000+1000*(같은 눈의 숫자) 식을 통하여 연산을 수행한다.

a-b, b-c, a-c처럼 2개 값만 같다면, 1000+100*(같은 눈의 숫자) 식을 통하여 연산을 수행한다.

a, b, c가 모두 다르다면, 100*(가장 큰 눈의 숫자) 식을 통하여 연산을 수행한다.

- 위 방식으로 저장된 result와 max의 값을 비교하는데, 만일 현재 result값이 max값보다 크다면 max의 값을 변경해 준다.

 

4) 위 연산이 모두 끝났다면, 최종적으로 저장된 max의 값을 출력한 뒤 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;

//백준 2476번 코드
int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);   cout.tie(NULL);
    
    int n;
    cin >> n;

    int max = 0;
    for (int i = 0; i < n; i++) {
        int a, b, c;
        cin >> a >> b >> c;

        int result;
        if (a == b && b == c) {
            result = 10000 + a * 1000;
        }
        else if (a == b || a == c) {
            result = 1000 + a * 100;
        }
        else if (b == c) {
            result = 1000 + b * 100;
        }
        else {
            int m = a > b ? a : b;
            m = m > c ? m : c;
            result = m * 100;
        }

        if (max < result) { max = result; }
    }
    cout << max << endl;
}

 

제출 결과

백준 BOJ 2476번 주사위 게임 문제 C++ 제출 결과

(2023.05.04 백준 2476번 문제 제출 결과)

반응형