백준 가위 바위 보?

KIMYEONGJUN·2025년 4월 6일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에는 테스트 케이스의 개수 t(0 < t < 1000)가 주어진다.
각 테스트 케이스의 첫째 줄에는 가위 바위 보를 한 횟수 n(0 < n < 100)이 주어진다.
다음 n개의 줄에는 R, P, S가 공백으로 구분되어 주어진다.
R, P, S는 순서대로 바위, 보, 가위이고 첫 번째 문자는 Player 1의 선택, 두 번째 문자는 Player 2의 선택이다.

각 테스트 케이스에 대해서 승자를 출력한다. (Player 1 또는 Player 2)
만약, 비겼을 경우에는 TIE를 출력한다.

내가 이 문제를 보고 생각해본 부분

입력 처리: BufferedReader를 사용하여 입력을 받는다.
게임 결과 계산:
각 테스트 케이스마다 플레이어의 승리를 카운트해준다.
각 라운드에서 승자를 결정하고 카운트를 업데이트해준다.
결과 출력: 모든 결과를 StringBuilder에 저장한 후, 마지막에 한 번에 출력한다.

코드로 구현

package baekjoon.baekjoon_27;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

// 백준 4493번 문제
public class Main983 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int t = Integer.parseInt(br.readLine()); // 테스트 케이스 개수

        for(int i = 0; i < t; i++) {
            int n = Integer.parseInt(br.readLine()); // 가위 바위 보를 한 횟수
            int player1Wins = 0;
            int player2Wins = 0;

            for(int j = 0; j < n; j++) {
                String[] moves = br.readLine().split(" ");
                char player1Move = moves[0].charAt(0);
                char player2Move = moves[1].charAt(0);

                if(player1Move == player2Move) {
                    continue; // 비김
                }

                if((player1Move == 'R' && player2Move == 'S') ||
                        (player1Move == 'S' && player2Move == 'P') ||
                        (player1Move == 'P' && player2Move == 'R')) {
                    player1Wins++;
                } else {
                    player2Wins++;
                }
            }

            if(player1Wins > player2Wins) {
                sb.append("Player 1\n");
            } else if(player2Wins > player1Wins) {
                sb.append("Player 2\n");
            } else {
                sb.append("TIE\n");
            }
        }

        System.out.print(sb.toString());
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글