같은 눈이 4개가 나오면 50,000원+(같은 눈)×5,000원의 상금을 받게 된다. 같은 눈이 3개만 나오면 10,000원+(3개가 나온 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개씩 두 쌍이 나오는 경우에는 2,000원+(2개가 나온 눈)×500원+(또 다른 2개가 나온 눈)×500원의 상금을 받게 된다. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
이라는 조건으로 진행하는 게임이 있습니다.
출력값으로 가장 많은 상금을 받은 사람의 상금을 출력해야하는 문제입니다.
🔔 Kick Point :
조건 확인 시, 같은눈 2개씩 인 경우에는 조건 속 조건을 들어가야하는 것만 구현을 하면 잘 될것 같습니다.
또한 int arr[7]을 통해
주사위가 1이 나온경우 arr[1]++
주사위가 2이 나온경우 arr[2]++ 식으로 이어가면서, 각 주사위가 나온 횟수를 저장해주었습니다.
🔔 Code :
#include <iostream>
using namespace std;
int main()
{
int n, total =0;
cin >> n;
while (n--) {
int arr[7] = { 0, };
// 1. 입력부
for (int i = 0; i < 4; i++) {
int tmp;
cin >> tmp;
arr[tmp]++;
}
// 2. 조건부
for (int j = 6; j > 0; j--) {
if (arr[j] == 4) {
total = total < 50000 + 5000 * j ? 50000 + 5000 * j : total;
break;
}
else if (arr[j] == 3) {
total = total < 10000 + 1000 * j ? 10000 + 1000 * j : total;
break;
}
else if (arr[j] == 2) {
for (int k = j - 1; k > 0; k--) {
if (arr[k] == 2) {
total = total < 2000 + j * 500 + k * 500 ? 2000 + j * 500 + k * 500 : total;
break;
}
else {
total = total < 1000 + 100 * j ? 1000 + 100 * j : total;
}
}
break;
}
else if(arr[j] == 1) {
total = total < 100 * j ? 100 * j : total;
}
}
}
cout << total;
}