[문제풀이] 02-03. 가위 바위 보

𝒄𝒉𝒂𝒏𝒎𝒊𝒏·2023년 10월 27일
0

인프런, 자바(Java) 알고리즘 문제풀이

Array(1, 2차원 배열) - 0203. 가위 바위 보


🗒️ 문제


🎈 나의 풀이

	private static void solution(int n, String str1, String str2) {
        String[] user1 = str1.split(" ");
        String[] user2 = str2.split(" ");


        for(int i=0; i<n; i++) {
            int result = Integer.parseInt(user1[i]) - Integer.parseInt(user2[i]);
            if(result == 0) System.out.println("D");
            else if(result == -1 || result == 2) System.out.println("B");
            else System.out.println("A");
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.nextLine());
        String str1 = sc.nextLine();
        String str2 = sc.nextLine();

        solution(n, str1, str2);
    }


🖍️ 강의 풀이

    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";
			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";
		}
		return answer;
	}
	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		int[] a=new int[n];
		int[] b=new int[n];
		for(int i=0; i<n; i++){
			a[i]=kb.nextInt();
		}
		for(int i=0; i<n; i++){
			b[i]=kb.nextInt();
		}
		for(char x : T.solution(n, a, b).toCharArray()) System.out.println(x);
	}


💬 짚어가기

두 플레이어의 정보를 2개의 배열에 담고, 순회하며 비교하는 간단한 로직이다.

나의 풀이에서는 두 수의 연산 결과의 경우의 수를 따져 승패를 판별하도록 했다.
-1, 2인 경우 B의 승리, 그 외의 경우 A의 승리다.

강의에서는 A의 승리 조건을 나열한 분기문을 통해 판별하도록 구현했다.
좀 더 코드가 간결한 방향으로 로직을 구상해보았으나, 강의 방식이 훨씬 직관적이다.

profile
𝑶𝒏𝒆 𝒅𝒂𝒚 𝒐𝒓 𝒅𝒂𝒚 𝒐𝒏𝒆.

0개의 댓글