© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 4493 - 가위 바위 보?

2024-08-27
BOJ
브론즈 III
cpp
원본 문제 보기
구현

문제

BOJ 4493 - 가위 바위 보?

두 플레이어의 가위바위보 N라운드 결과가 주어질 때, 승리 횟수가 많은 플레이어를 출력하라. 동률이면 TIE.

입력

테스트 케이스 수 T, 각 케이스마다 라운드 수 N과 N줄의 선택(R/P/S)이 주어진다.

출력

각 게임의 승자 또는 TIE를 출력한다.

예제

입력출력
1 3 R S P R S SPlayer 1

풀이

각 라운드의 승패를 조건 분기로 판정하고 승리 횟수를 집계한다.

  1. 각 라운드에서 R/P/S를 비교한다 (R은 S를, P는 R을, S는 P를 이김)
  2. 같으면 무승부, 아니면 해당 플레이어의 승리 수를 증가시킨다
  3. 모든 라운드 후 승리 횟수를 비교하여 결과를 출력한다

핵심 아이디어: 가위바위보 규칙을 조건 분기로 구현하며, 3가지 경우(승/패/무)만 처리하면 된다.

코드

#include <iostream>
using namespace std;
 
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  int t;
  cin >> t;
 
  while (t--)
  {
    int n;
    cin >> n;
    int a = 0, b = 0;
    while (n--)
    {
      char A, B;
      cin >> A >> B;
      if (A == B)
        ;
      else if (A == 'R')
      {
        if (B == 'P')
          b++;
        else if (B == 'S')
          a++;
      }
      else if (A == 'P')
      {
        if (B == 'R')
          a++;
        else if (B == 'S')
          b++;
      }
      else if (A == 'S')
      {
        if (B == 'P')
          a++;
        else if (B == 'R')
          b++;
      }
    }
    if (a == b)
      cout << "TIE\n";
    else if (a > b)
      cout << "Player 1\n";
    else
      cout << "Player 2\n";
  }
 
  return 0;
}

복잡도

  • 시간: O(T * N) (T: 게임 수, N: 라운드 수)
  • 공간: O(1)