시작은 미미하나 끝은 쥬쥬하리라.

PS/Baek-Joon C++

[백준 C++] 단계별 문제풀이 2단계 < 2480 : 주사위 세개 >

코딩뚜벅이 2024. 1. 24. 21:12

주사위 세개

  • 문제
  • 풀이
  • 결과

문제


 

풀이

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int nDice[3];
    cin >> nDice[0] >> nDice[1] >> nDice[2];

    // 오름차순 정렬 (sort() : 배열, 배열 바로 다음 요소를 인자로)
    sort(nDice, nDice + 3);

    int nTotal;

    if (nDice[0] == nDice[1] && nDice[1] == nDice[2]) {
        nTotal = 10000 + nDice[0] * 1000;
    } else if (nDice[0] == nDice[1] || nDice[1] == nDice[2]) {
        nTotal = 1000 + nDice[1] * 100;
    } else {
        nTotal = nDice[2] * 100;
    }

    cout << nTotal << endl;

    return 0;
}

 

입력 받은 3개 값의 중복 빈도에 따른 결과값 산출 문제입니다. 일단 저는 주사위의 값을 int형 배열로 받아서 각 주사위의 값이 동일한지의 여부는 if문을 통해 구성하였고, 3개 값이 다 다른 경우에 가장 큰 값을 이용한 계산식이 세워지기 때문에 이 입력 값 중 가장 큰 값을 추출할 필요가 있습니다. 저는 algorithm 클래스에서 제공하는 sort() 메서드를 통해 배열을 오름차순 정렬하여, 제일 큰 값을 추출하는 방식을 사용했습니다. 분명 해당 클래스를 사용하지 않고도 해결할 수 있는 문제이기에 if문을 잘 활용하면 해결할 수 있는 문제인 것 같습니다.

 


 

결과