Koala - 10기/기초 알고리즘 스터디

[백준/C++] 2511: 카드놀이

나는 푸딩 2023. 3. 17. 20:13

[Problem]


[Solution]


arr배열과 brr배열에는 A와 B가 가지고 있는 카드 숫자를 저장한다.

sum_a는 A의 최종 점수를, sum_b에는 B의 최종 점수를 저장한다.

num 은 A와 B가 공개한 숫자가 같은 경우가 몇 번 있었는지 세기 위한 변수이다.

flag는 누가 마지막으로 이겼는지 확인하기 위한 변수이다.(flag값이 0이면 A가 flag값이 1이면 B가 마지막으로 이긴 것)

1. arr배열과 brr배열에 숫자를 입력받는다.

2. for문을 활용하여 0부터 9까지 수행한다.

    2-1. arr[i]값이 brr[i]값보다 큰 경우 flag에 0을 저장하고 sum_a에 3을 더한다.

    2-2. arr[i]값이 brr[i]값보다 작은 경우 flag에 1을 저장하고 sum_b에 3을 더한다.

    2-3. arr[i]값과 brr[i]값이 같은 경우 sum_a과 sum_b에 1을 더하고 num 값을 1만큼 올린다.

3. sum_a 와 sum_b값을 출력한다.

4. sum_a값이 sum_b값보다 크면 'A'를 출력한다.

5. sum_b값이 sum_a값보다 크면 'B'를 출력한다.

6. sum_a값과 sum_b값이 같을 때

    6-1. num값이 10이면 'D'를 출력한다.

    6-2. num값이 10이 아니면

           6-2-1. flag값이 0이면 'A'를 출력한다.

           6-2-2. flag값이 1이면 'B'를 출력한다. 

[Answer]


#include <iostream>

using namespace std;

int main() {
    int arr[10];
    int brr[10];
    int sum_a = 0;
    int sum_b = 0;
    int num = 0;
    int flag = 0;
    
    for(int i = 0; i < 10; i++) {
        cin >> arr[i];
    }
    
    for(int i = 0; i < 10; i++) {
        cin >> brr[i];
    }
    
    for(int i = 0; i < 10; i++) {
        if(arr[i] > brr[i]) {
            sum_a += 3;
            flag = 0;
        }
            
        if(arr[i] < brr[i]) {
            sum_b += 3;
            flag = 1;
        }
            
        if(arr[i]==brr[i]) {
            sum_a += 1;
            sum_b += 1;
            num ++;
        }
        
    }
    
    cout << sum_a << " " << sum_b << "\n";
    
    if(sum_a>sum_b) {
        cout << 'A';
    }
    
    if(sum_a < sum_b) {
        cout << 'B';
    }
    
    if(sum_a==sum_b) {
        if(num==10) {
            cout << 'D';
        }
        
        else {
            if(flag==0) {
                cout << 'A';
            }
            
            else {
                cout << 'B';
            }
        }
    }
    
    return 0;
    
}

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