기타등등/알고리즘 기록

[C++]카드게임

CodeJB 2021. 6. 19. 19:52

#include <iostream>
//각자 공개할때마다 라운드 증가 10개의 카드(10라운드)
//숫자가 더 큰 사람이 이김 비기면 D
//이기면 3점 패자 0점 동점 1점
//총점이 같으면 마지막라운드에서 이긴 사람
//모든 라운드에서 비기면 비김

int main() {
    int A[10],B[10];
    int AP = 0 ,BP = 0,i;
    int rw = 0;
    //round winer를 체크하여 마지막에 누가 이겼는지를 알도록 함
    //이게 핵심
    
    for(i = 0; i < 10; i++){
        scanf("%d",&A[i]);
    }
    for(i = 0; i < 10; i++){
        scanf("%d",&B[i]);
    }
    
    for(i = 0; i < 10; i++){
        if(A[i] == B[i]){
            AP+=1;
            BP+=1;
        }
        else if(A[i] > B[i]) {AP+=3; rw=1; }
        else if(A[i] < B[i]) {BP+=3; rw=2; }
    }
    
    if(AP == BP){
        if(rw == 0) printf("D\n");
        else if(rw == 1) printf("A\n");
        else if(rw == 2) printf("B\n");
    }
    else if(AP > BP){ printf("%d %d\n",AP,BP); printf("A\n"); }
    else if(AP < BP){ printf("%d %d\n",AP,BP); printf("B\n"); } 
    
    
    return 0;
}
  • rw를 체크하여 마지막 라운드의 승자가 누구인지를 체크하는 것이 핵심이다.
  • 문제에서, 총점이 같은 경우에는 마지막에 이긴 사람을 승자로 한다고 했는데 본인은 "마지막 라운드"라고 잘못 읽어서 무조건 A[9]와 B[9]를 체크해야겠다고만 생각했다... 그래서 완전 꼬였다. 문제를 제대로 읽어야겠다..ㅠㅠ
  • 뭐 그걸 떠나서 승자체크를 계속 해주는게 매우 중요하다.

'기타등등 > 알고리즘 기록' 카테고리의 다른 글

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