[백준 2511] 카드놀이

Date:     Updated:

카테고리:

태그:

난이도

브론즈 III

📜문제

https://www.acmicpc.net/problem/2511

🌞풀이

#include <iostream>

using namespace std;

int A[10];
int B[10];
int A_Score;
int B_Score;
int check[10];

int main()
{
	for (int i = 0; i < 10; i++)
	{
		cin >> A[i]; // A 점수 입력
	}

	for (int i = 0; i < 10; i++)
	{
		cin >> B[i]; // B 점수 입력
	}

	for (int i = 0; i < 10; i++)
	{
		if (A[i] > B[i]) A_Score += 3; // A가 이긴경우 +3점
		else if (A[i] < B[i])
		{
			B_Score += 3; // B가 이긴경우 +3점
			check[i] = 1; // B Win : 1  A Win : 0
		}
		else
		{
			A_Score += 1; // 비긴경우 +1점 씩
			B_Score += 1;
			check[i] = -1; // Draw : -1
		}
	}
	cout << A_Score << " " << B_Score << "\n";

	if (A_Score > B_Score) cout << "A\n";
	else if (A_Score < B_Score) cout << "B\n";
	else
	{
		int i = 0;
		for (i = 9; i >= 0; i--) // 총 10번 돈다.
		{
			if (check[i] == 0) // 가장 최근에 A가 이긴경우
			{
				cout << "A\n";
				break;
			}
			else if (check[i] == 1) // 가장 최근에 B가 이긴경우
			{
				cout << "B\n";
				break;
			}
		}
		if (i < 0) cout << "D\n"; // 10라운드 다 점수가 같은 경우
	}
	return 0;
}
  • 총 10라운드라고 했을 때 각 라운드의 점수를 비교하면서 누가 이겼는지 check 배열에 저장을 해둔다.

  • 마지막에 A_Score와 B_Score가 같을 경우 check배열을 check[9] 부터 확인하면서 마지막으로 누가 이겼는지 확인한다.

맨 위로 이동하기

BOJ 카테고리 내 다른 글 보러가기

댓글남기기