카테고리 없음

백준] 14696 - 딱지놀이(KOI 2017)

TwinParadox 2018. 6. 24. 08:26
728x90

시간 제한 : 2초

메모리 제한 : 512MB




입력

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 딱지놀이의 총 라운드 수를 나타내는 자연수 N이 주어진다. N 은 1 이상 1,000 이하이다. 다음 줄에는 라운드 1에서 어린이 A가 내는 딱지에 나온 그림의 총 개수 a가 주어진다. a는 1 이상 100 이하이다. 뒤따라 나오는 a개의 정수는 어린이 A가 낸 딱지의 그림을 나타내는데, 각각 4, 3, 2, 1 중 하나의 값이다. 4, 3, 2, 1의 순서대로 주어지지 않을 수 있음에 주의하라. 다음 줄에는 라운드 1에서 어린이 B가 내는 딱지에 나온 그림의 총 개수 b가 주어진다. b도 1 이상 100 이하이다. 뒤따라 나오는 b개의 정수는 어린이 B가 낸 딱지의 그림을 나타내는데, 역시 4, 3, 2, 1 중 하나의 값이다. 역시 4, 3, 2, 1의 순서대로 주어지지 않을 수 있음에 주의하라. 다음 두 줄에는 라운드 2에서 어린이 A, B가 낸 딱지의 그림들을 같은 식으로 표현한다. 위와 같은 식으로 매 라운드마다 두 어린이가 낸 딱지의 정보는 두 줄에 표현되며, N 라운드의 딱지 정보는 차례대로 총 2N 개의 줄에 주어진다.




출력

표준 출력으로 총 N 줄을 출력한다. 출력의 i번째 (1 ≤ i ≤ N) 줄에 정확히 한 글자를 출력하는데, 출력하는 글자는 A, B, D 중 하나로 라운드 i의 결과를 나타낸다. 각 라운드의 결과는 A가 승자라면 A, B가 승자라면 B, 무승부라면 D이다.




소스코드

#include <iostream>
using namespace std;
int main(void)
{
	int n, an, bn;
	cin >> n;
	while (n--)
	{
		int tmp, a[5] = { 0, }, b[5] = { 0, };
		cin >> an;
		for (int i = 0; i < an; i++)
		{
			cin >> tmp;
			a[tmp]++;
		}
		cin >> bn;
		for (int i = 0; i < bn; i++)
		{
			cin >> tmp;
			b[tmp]++;
		}
		int k = 4;
		int who = 0;
		for (int i = 4; i >= 1; i--)
		{
			if (a[i] > b[i])
				who = 1;
			else if (a[i] < b[i])
				who = 2;
			if (who != 0)
				break;
		}

		if (who == 0)
			cout << "D\n";
		else if (who == 1)
			cout << "A\n";
		else if (who == 2)
			cout << "B\n";
	}
}




Tip

배열과 if-else 분기만 잘 이용하면 쉽게 풀 수 있는 문제였다.



728x90
728x90