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줄과 동일합니다.