알고리즘 문제풀이/Beakjoon

백준 4493. 가위 바위 보? (JAVA)

joah.k 2023. 2. 9. 21:01
728x90

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

 

4493번: 가위 바위 보?

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

www.acmicpc.net

 

가위 바위 보? 

한국어   
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB 3798 2448 2195 67.125%

문제

가위 바위 보는 두 명이서 하는 게임이다. 보통 미리 정해놓은 수 만큼 게임을 하고, 많은 게임을 이긴 사람이 최종 승자가 된다.

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

  • 바위는 가위를 이긴다.
  • 가위는 보를 이긴다.
  • 보는 바위를 이긴다.

입력

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

출력

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

예제 입력 1 복사

3
2
R P
S R
3
P P
R S
S R
1
P R

예제 출력 1 복사

Player 2
TIE
Player 1

 

 

 


풀이 :  각 케이스에 대해서 점수 산정을 하는 경우는 for문으로 받는다. 

각 케이스에선 Player 1이 이기는 경우, Player 2가 이기는 경우, 비기는 경우 이렇게 3가지 경우가 존재할 것이며 

각각의 경우에 대해 점수를 주고 (이기는 경우 +1, 비기는 경우 0) 점수가 높은 Player를 출력한다. 

 

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

public class Main {
    // 백준 4493. 가위 바위 보?
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());

        for(int i=0; i<t; i++){
            int n = Integer.parseInt(br.readLine());

            int scoreP1 = 0;
            int scoreP2 = 0;
            String s = "";

            for(int j=0; j<n; j++){
                StringTokenizer st = new StringTokenizer(br.readLine());
                String p1 = st.nextToken();
                String p2 = st.nextToken();


                // 비기는 경우
                if((p1.equals("R")&&p2.equals("R"))
                        || (p1.equals("P")&&p2.equals("P"))
                        || (p1.equals("S")&&p2.equals("S"))){
                    scoreP1+=0;
                    scoreP2+=0;
                }
                // p1이 이기는 경우
                else if((p1.equals("R")&&p2.equals("S"))
                        || (p1.equals("S")&&p2.equals("P"))
                        || (p1.equals("P")&&p2.equals("R"))){
                    scoreP1+=1;
                }
                // 그 외엔 p2가 이긴다
                else scoreP2+=1;


                // 점수 산정
                if (scoreP1 > scoreP2) s="Player 1";
                else if (scoreP1 < scoreP2) s="Player 2";
                else s="TIE";
            }
            System.out.println(s);
        }
    }
}
728x90

'알고리즘 문제풀이 > Beakjoon' 카테고리의 다른 글

백준 5753. Pascal Library (feat. Chat GPT)  (0) 2023.02.11
백준 2588. 곱셈 (JAVA)  (0) 2023.02.10
백준 1703. 생장점 (JAVA)  (0) 2023.02.07
백준 2010. 플러그 (JAVA)  (0) 2023.02.06
백준 1247. 부호 (JAVA)  (0) 2023.02.06