
내가 생각했을때 문제에서 원하는부분
첫째 줄에는 테스트 케이스의 개수 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();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.