본문 바로가기

문제풀이/C++

[C++] 카드게임

728x90

[목적]

0부터 9까지의 숫자가 표시된 카드를 가지고 A와 B가 게임을 한다.

두 사람의 카드의 숫자값을 입력 받은 후 각 라운드 마다 이긴 사람이 3점을 가져가게 되며, 비기는 경우에는 두 사람 모두에게 1점이 주어진다.

총 10라운드의 게임이 끝난 후 A와 B의 점수를 출력하며, 두 사람 중 승자를 출력하는 프로그램이다.

만약, 두 사람의 10라운드의 결과가 모두 비겼을 시 "D"라고 표시하며 승점만 같은 경우에는 마지막에 이긴 사람을 승자로 하여 출력한다.

 

[입력예제]

4 5 6 7 0 1 2 3 9 8
1 2 3 4 5 6 7 8 9 0

 

[출력예제]

16 13
A

 

A의 10라운드의 대결 카드는 윗줄에 입력받았으며, B의 10라운드 대결 카드는 아랫줄에 입력을 받았다.

각 라운드의 숫자를 비교하여 큰 사람이 3점을 얻어갔으며, 비긴 경우에는 1점을 가져갔다.

A는 총 5번을 이기고 1번을 비겨 16점을 획득하였으며,

B는 총 4번을 이기고 1번을 비겨 13점을 획득하여 최종 승자는 A가 되었다.


[코드]

#include <iostream>

using namespace std;

int main(int argc, const char * argv[]) {
    
    int i, a[10], b[10], awin=0, bwin=0, flag=0, dd=1;
    
    for(i=0; i<10; i++) cin >> a[i];
    for(i=0; i<10; i++) cin >> b[i];
    
    for(i=0; i<10; i++){
        if(i==9){
            if(a[i]>b[i]) flag=1;
        }
        if(a[i]==b[i]){
            awin++;
            bwin++;
        }
        else if(a[i]>b[i]) awin+=3;
        else bwin+=3;
    }
	
    cout << awin << " " << bwin << endl;
	
    for(i=0; i<10; i++){
        if(a[i]!=b[i]) {
            dd = 0;
            break;
        }
    }
	
    if(dd == 1) cout << "D";	
    else if(awin==bwin && flag==1) cout << "A";
    else if(awin==bwin && flag==0) cout << "B";
    else if(awin>bwin) cout << "A";
    else cout << "B";
	
    return 0;
}

1. A와 B의 10라운드 카드를 입력받는다.

2. 0부터 9까지 for문을 반복하여 만약 10라운드(i==9)에서 이긴 사람이 A라면 flag를 1로 바꿔주고 그렇지 않다면 0으로 나둔다 (모든 라운드를 비긴 경우 가장 마지막에 이긴 사람이 승자가 되기 때문)

3. A와 B가 같다면 둘 다 승점을 1점씩 올려준다.

4. A가 이겼다면 A의 승점을 3점올려주고, B가 이겼다면 B의 승점을 3점 올려준다.

5. A와 B의 최종 승점을 출력한다.

6. for문을 반복하여 A와 B의 카드가 모두 같은지 검사하여 같지 않다면 dd변수를 0으로 바꾼 뒤 for문을 빠져나온다. (결과가 모두 같은지를 알아봄)

7. 만약 카드 값이 모두 같아 dd가 1이 나왔다면 비긴 결과인 "D"를 출력한다.

8. 승점이 같지만 flag에 의해 마지막 결과를 이긴 사람을 출력해준다.

9. 승점이 높은 경우에는 승점이 높은 사람을 출력해준다.

 

해당 코드는 더 간단하게 만들 수 있을 듯.. 술 한잔 했더니 알딸딸~~~

 

[실행 결과]

728x90
반응형

'문제풀이 > C++' 카테고리의 다른 글

[C++] 연속 부분 증가수열  (0) 2021.01.10
[C++] 온도의 최대값  (0) 2021.01.10
[C++] 가위 바위 보  (0) 2021.01.06
[C++] 분노 유발자  (0) 2021.01.05
[C++] 층간소음  (0) 2021.01.05