백준 알고리즘/Lang-C | C++

[백준/C] 4493번 가위 바위 보?

Jongung 2021. 11. 29. 16:06

 

백준 온라인 저지 / 4493번 가위 바위 보?

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

 

4493번: 가위 바위 보?

첫째 줄에는 테스트 케이스의 개수 t(0 < t < 1000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 가위 바위 보를 한 횟수 n(0 < n < 100)이 주어진다. 다음 n개의 줄에는 R, P, S가 공백으로 구분되어 주어

www.acmicpc.net

 

  • 사용언어 : C (C99)
  • 알고리즘 : 구현
  • Solved.ac Tier : BRONZE III

 

 

C 코드

1. 문제 정리

두명의 플레이어가 가위 바위보를 하는 문제이다. 가위 바위 보를 한 횟수와 매번 두명이 무엇을 냈는지 주어졌을 때, 최종 승자를 출력하는 프로그램을 작성하는 문제이다. 

간단한 구현 문제이다. 가위 바위 보 구현은 

if(R == S){
	P1++;
    P2++;
}
else if(R == 'R' && S == 'P'){
	P2++;
}
else if(R == 'R' && S == 'S'){
    P1++;
}
else if(R == 'P' && S == 'R'){
    P1++;
}
else if(R == 'P' && S == 'S'){
    P2++;
}
else if(R == 'S' && S == 'P'){
    P1++;
}
else if(R == 'S' && S == 'R'){
    P2++;
}

이런식으로 작성하였다. P1이 이기면  P1에다가 1점을 더주고 P2가 이기면 P2에다가 점수를 주는 형태로 구현했다.

 

2. 완성 코드

#include <stdio.h>

int main(){
	int t,n;
	scanf("%d", &t);
	for(int i=0; i<t; i++){
		scanf(" %d", &n);
		int P1 = 0, P2 = 0;
		for(int j=0; j<n; j++){
			char R = 0,S = 0;
			scanf(" %c %c", &R, &S);
			if(R == S){
				P1++;
        P2++;
			}
			else if(R == 'R' && S == 'P'){
	      P2++;
      }
			else if(R == 'R' && S == 'S'){
        P1++;
      }
			else if(R == 'P' && S == 'R'){
        P1++;
      }
			else if(R == 'P' && S == 'S'){
        P2++;
      }
			else if(R == 'S' && S == 'P'){
        P1++;
      }
			else if(R == 'S' && S == 'R'){
        P2++;
      }
		}
    if(P1 == P2)
			printf("TIE\n");
		else if(P1> P2){
			printf("Player 1\n");
		}
		else{
			printf("Player 2\n");
        }
	}
}