코딩테스트/기타

[배열] 가위 바위 보 .java

머밍 2024. 10. 10. 10:28

설명

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

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

예를 들어 N=5이면

두 사람의 각 회의 가위, 바위, 보 정보가 주어지면 각 회를 누가 이겼는지 출력하는 프로그램을 작성하세요.

입력

첫 번째 줄에 게임 횟수인 자연수 N(1<=N<=100)이 주어집니다.

두 번째 줄에는 A가 낸 가위, 바위, 보 정보가 N개 주어집니다.

세 번째 줄에는 B가 낸 가위, 바위, 보 정보가 N개 주어집니다.

출력

각 줄에 각 회의 승자를 출력합니다. 비겼을 경우는 D를 출력합니다.

예시 입력 1 

5
2 3 3 1 3
1 1 2 2 3

예시 출력 1

A
B
A
B
D

 

 

내 풀이

1(가위), 2(바위), 3(보) -> 같으면 비김

 

차이에 주목했다

차이가 +1 = 바위는 가위에 이긴다(2-1) = 보는 바위에 이긴다(3-2)

=> 즉, 차이가 1일때 더 큰 값이 이긴다

 

하지만 차이가 -2일 때 = 가위는 바위에 이긴다 (1-3)은 더 작은 값이 이긴다

=> 작은 값으로 비교하기엔 경우가 1개 밖에 없어 1(가위)의 값을 가진 쪽이 이기는 것으로 구현하였다

 

import java.util.Scanner;

public class Main {

    public static void main(String[] args)  {

        Scanner sc = new Scanner(System.in);
        int n= sc.nextInt();

        int[] a = new int[n];//A의 정보
        int[] b = new int[n];//B의 정보
        for(int i=0;i<n;i++){
            a[i]=sc.nextInt();
        }
        for(int i=0;i<n;i++){
            b[i]=sc.nextInt();
        }

        for(int i=0;i<n;i++){//n번의 가위바위보
            if(a[i]==b[i]){//같으면 비김
                System.out.println("D");
            } else if(Math.abs(a[i]-b[i])==2) {//차이가 2일때
                if(a[i]==1) System.out.println("A");//1(가위)인 쪽이 이김
                else System.out.println("B");
            } else {//차이가 1이면
                if(a[i] > b[i]) System.out.println("A");
                else System.out.println("B");
            }
        }
    }


}

 

다른 풀이

차이가 아닌 a가 가지는 값마다 비교한 풀이이다

import java.util.Scanner;

public class Main {
    public String solution(int n, int[] a, int[] b){
        String answer = "";

        for(int i=0; i<n; i++){
            if(a[i] == b[i]) answer += "D";
            //A가 이기는 경우
            else if(a[i]==1 && b[i]==3) answer += "A";//가위가 보를 이김
            else if(a[i]==2 && b[i]==1) answer += "A";//묵이 가위를 이김
            else if(a[i]==3 && b[i]==2) answer += "A";//보가 묵을 이김
            else answer += "B";//나머지는 다 B가 이김

        }
        return answer;
    }
    public static void main(String[] args)  {
        Main T =new Main();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int[] a = new int[n];
        int[] b = new int[n];
        for(int i=0; i<n; i++){
            a[i] = sc.nextInt();
        }
        for(int i=0; i<n; i++){
            b[i] = sc.nextInt();
        }

        for(char c : T.solution(n,a,b).toCharArray()){//문자열의 배열화
            System.out.println(c);
        }

    }


}