<2.3> 가위 바위 보

mutexlocking·2022년 7월 13일
0

문제
: 두 사람중 한 사람씩 순서대로 가위/바위/보와 mapping된 숫자 1,2,3중 하나를 N번씩 입력할 것이다. 이 입력값을 가지고 각 횟수에 누가 이겼는지를 출력하라
(첫 사람은 A , 두 번째 사람은 B이므로 , 1회에 A가 이겼으면 A 출력)
(가위 : 1 , 바위 : 2, 보 : 3)

이 문제는 요구사항 및 해결책을 따로 정리할 필요까지는 없는 문제이다.
단순히 가위바위보의 rule을 안다면 누구나 해결할 수 있는 문제라고 생각된다.
대신 나의 경우는 정수 인자 2개를 받아, 이 값을 가지고 가위바위보를 했을 때 누가 이기는지를 반환해 주는 whoIsWinner() 메소드를 정의하였다.
그러면 입력받은 두 배열의 각 element를 쌍으로 그냥 인자로 넣어 호출해주기만 하면 되니깐, 편하게 문제를 풀 수 있었다.

import java.util.Scanner;

public class Main {

    /**
     * 1: 가위 2:바위 3:보
     *
     * */
    public static void solution(int[] arr1, int[] arr2, int N){

        for(int i=0; i<N; i++){
            System.out.println(whoIsWinner(arr1[i], arr2[i]));
        }
    }

    public static char whoIsWinner(int a, int b){

        if(a==1){
            if(b==1) return 'D';
            if(b==2) return 'B';
            if(b==3) return 'A';

        } else if(a==2){
            if(b==1) return 'A';
            if(b==2) return 'D';
            if(b==3) return 'B';

        } else if(a==3){
            if(b==1) return 'B';
            if(b==2) return 'A';
            if(b==3) return 'D';
        }

        //어차피 위 if~else if 문에서 모든 case가 걸리기 때문에, 절대로 E가 리턴되는 일은 없다. (문제 조건 상)
        return 'E';
    }

    public static void main(String[] args) {
        //0. Scanner 준비
         Scanner sc = new Scanner(System.in);

        //1. N을 입력받은 후 , 크기가 N인 배열 2개만큼의 자연수를 입력받음
        int N = sc.nextInt();

        int[] arr1 = new int[N];
        int[] arr2 = new int[N];

        for(int i=0; i<N; i++)
            arr1[i] = sc.nextInt();

        for(int i=0; i<N; i++)
            arr2[i] = sc.nextInt();

        //2. 이들을 인자로 넘겨주면서 solution()을 호출하여 -> 결과를 출력
        solution(arr1, arr2, N);
    }
}
profile
개발자가 되고자 try 하는중

0개의 댓글