본문 바로가기

CodingTest Practice

[인프런] 가위 바위 보

가위 바위 보

A, B 두 사람이 가위바위보 게임을 합니다. 총 N번의 게임을 하여 A가 이기면 A를 출력, B가 이기면 B를 출력, 비길 경우 D를 출력합니다.

가위, 바위, 보의 정보는 1: 가위, 2:바위, 3:보 로 정하겠습니다.

예를 들어 N의 값으로 5를 입력 후, A의 정보와 B의 정보를 다음과 같이 입력합니다. 

입력 값 비교를 통해 각 회를 누가 이겼는지 출력하는 프로그램을 작성하세요

회수 1 2 3 4 5
A의 정보 2 3 3 1 3
B의 정보 1 1 2 2 3
승자 A B A B D

 

■ 문제 풀이

1) 입력 설명
첫 번째 줄에 게임 횟수인 자연수 N (1<=N<=100)이 주어집니다.
두 번째 줄에는 A가 낸 가위, 바위, 보 정보가 N가 주어집니다.
세 번째 줄에는 B가 낸 가위, 바위, 보 정보가 N가 주어집니다.


2) 출력 설명
각 줄에 각 회의 승자를 출력, 비겼을 경우는 D를 출력

3) 테스트
input :

2 3 3 1 3
1 1 2 2 3

output : 
A
B
A
B
D

4) 문제 풀이
조건문을 이용하여 비겼을 경우와 A가 이긴 경우를 if-else if문에 작성하고 나머지(else)는 B가 이긴 경우가 된다.

 

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

    private List<String> solution(int[] a, int[] b, int count) {
        List<String> answer = new ArrayList<>();

        for (int i = 0; i < count; i++) {
            if (a[i] == b[i]) {
                answer.add("D");
            } else if (a[i] == 1 && b[i] == 3) {
                answer.add("A");
            } else if (a[i] == 2 && b[i] == 1) {
                answer.add("A");
            } else if (a[i] == 3 && b[i] == 2) {
                answer.add("A");
            } else {
                answer.add("B");
            }
        }
        return answer;
    }

    public static void main(String[] args) {
        Main main = new Main();

        Scanner scanner = new Scanner(System.in);
        int count = scanner.nextInt();
        int[] arrA = new int[count];
        int[] arrB = new int[count];

        for (int i = 0; i < count; i++) {
            arrA[i] = scanner.nextInt();
        }
        for (int i = 0; i < count; i++) {
            arrB[i] = scanner.nextInt();
        }
        for (String win : main.solution(arrA, arrB, count)) {
            System.out.println(win);
        }
    }
}