Computer Science/Algorithm Problem

백준] 2484 - 주사위 네 개(한국정보올림피아드 2010;KOI 2010 지역본선)

TwinParadox 2018. 8. 26. 22:01
728x90

시간 제한 : 1초

메모리 제한 : 128MB




입력

첫째 줄에는 참여하는 사람 수 N이 주어지고 그 다음 줄부터 N개의 줄에 사람들이 주사위를 던진 4개의 눈이 빈칸을 사이에 두고 각각 주어진다.




출력

첫째 줄에 가장 많은 상금을 받은 사람의 상금을 출력한다.




소스코드

#include <iostream>
using namespace std;
int main(void)
{
	int n, arr[4], max = 0;
	cin >> n;
	while (n--)
	{
		int dice[7] = { 0, }, tmp=0;
		for (int i = 0; i < 4; i++)
		{
			cin >> arr[i];
			dice[arr[i]]++;
		}

		for (int i = 1; i <= 6; i++)
		{
			if (dice[i] == 4)
			{
				tmp = 50000 + i * 5000;
				break;
			}
		}

		if (tmp == 0)
		{
			for (int i = 1; i <= 6; i++)
			{
				if (dice[i] == 3)
				{
					tmp = 10000 + i * 1000;
					break;
				}
			}
		}

		if (tmp == 0)
		{
			int cnt = 0;
			for (int i = 1; i <= 6; i++)
			{
				if (dice[i] == 2)
				{
					cnt++;
					tmp += i;
				}
			}

			if (cnt == 2)
				tmp = 2000 + tmp * 500;
			else if (cnt == 1)
				tmp = 1000 + tmp * 100;
		}

		if (tmp == 0)
		{
			for (int i = 6; i >= 1; i--)
			{
				if (dice[i])
				{
					tmp = i * 100;
					break;
				}
			}
		}

		if (max < tmp)
			max = tmp;
	}
	cout << max;
}




Tip

if로 분기할 줄 알면 빠르게 끝낼 수 있는 문제다.



728x90