본문 바로가기
카테고리 없음

2511 백준 (카드놀이) <C++>

by 코드 이야기 2020. 7. 30.
728x90

acmicpc.net/problem/2511

 

2511번: 카드놀이

첫 번째 줄에는 게임이 끝난 후, A와 B가 받은 총 승점을 순서대로 빈칸을 사이에 두고 출력한다. 두 번째 줄에는 이긴 사람이 A인지 B인지 결정해서, 이긴 사람을 문자 A 또는 B로 출력한다. 만약 �

www.acmicpc.net

Olympiad > 한국정보올림피아드 > KOI 2012 > 초등부 1번

 

 

 

 

배열 하나와 변수 하나만 이용해서 풀어보았다.

 

배열 0~9번 방에는 각 라운드의 점수를 담고, 

 

10번 방에는 각 라운드의 승점의 누적합을 담았다.

 

그리고 무승부일 경우를 위해 0번 방부터 누적합을 구하며

 

가장 뒷부분의 라운드 결과를 sw변수에 담아주었다.

 

 

 

 

 

//입력 부분

	for (int i = 0; i < 10; i++)
		cin >> arr[0][i];
	for (int i = 0; i < 10; i++)
		cin >> arr[1][i];

 

 

//처리 부분

	for (int i = 0; i < 10; i++){
		if (arr[0][i] > arr[1][i]) {
			arr[0][10] += WIN;  // 누적합을 구한다.
			sw = 1;  // 라운드 뒷부분의 결과를 담는다.
		}
		else if (arr[0][i] < arr[1][i]) {
			arr[1][10] += WIN;
			sw = 2;
		}
		else {
			arr[0][10]++; 
			arr[1][10]++;
		}
	}

 

 

//출력 부분

	cout << arr[0][10] << ' ' << arr[1][10] << '\n';  //각 점수를 일단 출력한다.
	if (arr[0][10] != arr[1][10]){ 
		if (arr[0][10] > arr[1][10]) cout << 'A';
		else cout << 'B';
	}
	else{  //둘의 점수가 같을 때 아까의 sw변수(마지막 승패 결과)를 이용해 구분하여 출력한다.
		if (sw == 1) cout << 'A';
		else if (sw == 2) cout << 'B';
		else cout << 'D';
	}

 

 

 

 

 

//전체 코드

#include <iostream>
#define WIN 3
using namespace std;

int main() {
	int arr[2][11]{}, sw = 0;
	
	for (int i = 0; i < 10; i++)
		cin >> arr[0][i];
	for (int i = 0; i < 10; i++)
		cin >> arr[1][i];

	for (int i = 0; i < 10; i++){
		if (arr[0][i] > arr[1][i]) {
			arr[0][10] += WIN;
			sw = 1;
		}
		else if (arr[0][i] < arr[1][i]) {
			arr[1][10] += WIN;
			sw = 2;
		}
		else {
			arr[0][10]++; 
			arr[1][10]++;
		}
	}

	cout << arr[0][10] << ' ' << arr[1][10] << '\n';
	if (arr[0][10] != arr[1][10]){
		if (arr[0][10] > arr[1][10]) cout << 'A';
		else cout << 'B';
	}
	else{
		if (sw == 1) cout << 'A';
		else if (sw == 2) cout << 'B';
		else cout << 'D';
	}
}

 

선언부분에서 배열 뒤에 {} 를 해주었는데 이것은 배열의 모든 방을 0으로 초기화시켜주기 위함이다.

 

 

728x90

댓글