[백준][C++] 2480번 주사위 세개
주사위 세개
문제 링크
분석
세 개의 주사위를 던져 나온 눈의 값을 입력받고, 눈의 중복 여부에 따라 상금을 계산하는 문제입니다.
각 주사위의 값은 1부터 6사이의 정수로 총 3개의 값이 주어집니다.
세 개의 주사위 값의 중복 여부에 따른 세 가지 경우가 존재합니다.
- 세 수가 모두 같은 경우
- 3 3 3
- 두 수만 같은 경우
- 3 3 6
- 세 수가 모두 다른 경우
- 2 5 6
경우에 따라 결과값을 의미하는 상금이 달라집니다.
- 세 수가 모두 같은 경우 $10000 + (같은 수 \times 1000)$
- 두 수만 같은 경우 $1000 + (같은 수 \times 100)$
- 모두 다른 경우 $가장 큰 수 \times 100$
세 수의 동일 여부를 조건문으로 판별해 해당 규칙을 적용한 상금을 계산하면 간단하게 풀어낼 수 있습니다.
풀이
#include <iostream>
using namespace std;
int main()
{
int a, b, c, d = 0;
cin >> a >> b >> c;
// 같은 눈이 3개인 경우
if (a == b && b == c)
{
d = 10000 + a * 1000;
}
// 같은 눈이 2개인 경우
else if (a == b || b == c)
{
d = 1000 + b * 100;
}
// 같은 눈이 2개인 경우
else if (a == c)
{
d = 1000 + a * 100;
}
// 모두 다른 눈이 나온 경우
else
{
d = max(max(a, b), c) * 100;
}
cout << d;
}
성능 요약
시간 복잡도는 상수 시간에 끝나기 때문에 $O(1)$입니다.
공간 복잡도는 고정된 크기의 상수 공간을 사용하기 때문에 $O(1)$입니다.
메모리: 2020 KB
시간: 0 ms
댓글남기기