Algorithm/Study
[백준 2480번 C++] 주사위 세개
congcoding
2020. 4. 29. 14:45
1. 문제 링크
https://www.acmicpc.net/problem/2480
2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)*1,000원의 상금을 받게 된다. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)*100원의 상금을 받게 된다. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)*100원의 상금을 받게 된다. 예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3*100으로 계
www.acmicpc.net
2. 문제 설명
세개의 값을 입력받은 후 규칙에 따라 계산하여 출력하는 문제입니다.
3. 소스코드
BOJ 2480번 주사위 세개 C++ 풀이입니다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
vector<int> v(3);
cin >> v[0] >> v[1] >> v[2];
sort(v.begin(), v.end());
if (v[0] == v[1] && v[1] == v[2]) cout << 10000 + (v[0] * 1000);
else if (v[0] == v[1]) cout << 1000 + (v[0] * 100);
else if (v[0] == v[2]) cout << 1000 + (v[0] * 100);
else if (v[1] == v[2]) cout << 1000 + (v[1] * 100);
else cout << v[2] * 100;
return 0;
}
세개의 값 중 최댓값을 사용해야하는 경우가 있어서 vector에 입력받아 sort함수로 정렬 후 계산했습니다.
#include <iostream>
using namespace std;
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int a, b, c;
cin >> a >> b >> c;
if (a == b && b == c)
else if (a == b) cout << 1000 + (a * 100);
else if (b == c) cout << 1000 + (b * 100);
else if (a == c) cout << 1000 + (a * 100);
else if (a > b ?
(a > c ? out << a * 100 : cout << c * 100)
: (b > c ? cout << b * 100 : cout << c * 100))
/*
else if (a > b && a > c) cout << a * 100;
else if (b > a && b > c) cout << b * 100;
else if (c > a && c > b) cout << c * 100;
*/
return 0;
}
굳이 vector를 사용하기 싫으시면 위의 코드와 같이 풀어도 됩니다.
마지막 else if문에 최댓값을 찾기 위해 삼항연산자를 사용하였는데 이를 풀어 쓰면 아래 주석 처리한 3줄과 동일합니다.