ezhoon

[인프런] 02_03 가위 바위 보 본문

[Java] 인프런 문제풀이/Array(배열)

[인프런] 02_03 가위 바위 보

ezhoon 2022. 1. 21. 10:00

문제


  1. 총 N번의 게임을 하여 A가 이기면 A, B가 이기면 B를 출력하고 비기는 경우에는 D를 출력한다.
    가위 : 1 바위 : 2  보 : 3
    출력 예시

이해


  • N이 5라고 했을 때 아래와 같다.
회수 1 2 3 4 5
A 2 3 3 1 3
B 1 1 2 2 3
승자 A B A B D
  • N을 입력받고 N의 수만큼 for문으로 A의 배열, B의 배열에 가위 바위 보 값을 입력한다.
    • 비길 경우 'D'
    • A : 가위 / B: 보 ->  'A'
    • A : 바위 / B : 가위 -> 'A'
    • A : 보 / B : 바위 -> 'A'
  • 위의 경우를 제외하고는 전부다 B가 이긴 경우이므로 더 이상 if문을 사용할 필요가 없다.
  • 이번에도 StringBuilder 이용해서 append 해 볼 생각이다.

 

⚠️ 주의사항


  • 비기는 경우와 A가 이기는 모든 경우의 수 말고는 B가 이기는 경우이다.
  • 가위 바위 보 헷갈리지 않도록 조심하기

 

풀이


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

/**
 * 1 가위 1은 2한테 지고 3한테 이긴다.
 * 2 바위 2는 1을 이기고 3한테 진다.
 * 3 보  3은 1한테 지고 2한테 이기고.
 */
public class Java_02_03 {

    public String solution(int N, int[] ATemp, int[] BTemp) {

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < N; i++) {
            // A가 이기는 경우 3개 처리 + 비기는 경우 한 뒤 나머지는 B가 이긴 것이므로 else 처리
            if (ATemp[i] == BTemp[i]) { // 비길 경우
                sb.append("D").append("\n");
            }
            else if (ATemp[i] == 1 && BTemp[i] == 3) { // 가위 보
                sb.append("A").append("\n");
            }

            else if (ATemp[i] == 2 && BTemp[i] == 1) { // 바위 가위
                sb.append("A").append("\n");
            }
            else if (ATemp[i] == 3 && BTemp[i] == 2) { // 보 바위
                sb.append("A").append("\n");
            }
            else{ // A가 이기는 경우가 아니고 비기는 경우도 아니면 B가 승리이므로 else로 처리
                sb.append("B").append("\n");
            }
        }
        return sb.toString();
    }

    public static void main(String[] args) throws IOException {

        Java_02_03 T = new Java_02_03();

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine()); // 가위바위보 게임 수
        StringTokenizer A = new StringTokenizer(br.readLine(), " "); // A 학생의 가위바위보 값 토큰 저장
        StringTokenizer B = new StringTokenizer(br.readLine(), " "); // B 학생의 가위바위보 값 토큰 저장

        int[] ATemp = new int[N]; // A 배열 초기화
        int[] BTemp = new int[N]; // B 배열 초기화

        for (int i = 0; i < N; i++) {
            ATemp[i] = Integer.parseInt(A.nextToken()); // Atemp에 A학생 가위바위보 토큰 값 저장
            BTemp[i] = Integer.parseInt(B.nextToken()); // Btemp에 A학생 가위바위보 토큰 값 저장
        }

        System.out.println(T.solution(N, ATemp, BTemp));

    }
}

출력화면

Comments