본문 바로가기
Computer Science/Algorithm

[Inflearn] 가위 바위 보

by 코딩맛 2022. 11. 13.

인프런의 자바(Java)알고리즘 문제풀이 입문:코딩테스트 대비 강좌의 강의를 보고 문제 해설을 작성해보았습니다.

 

섹션2. Array(1,2차원 배열)의 3. 가위 바위 보 강의편 입니다.

 

설명

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

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

예를 들어 N=5이면

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

 

입력

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

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

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

 

출력

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

 

import java.util.Scanner;

public class 가위_바위_보 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int[] numA = new int[num];
		int[] numB = new int[num];
		for(int i=0; i<num; i++) {
			numA[i] = sc.nextInt();
		}
		for(int i=0; i<num; i++) {
			numB[i] = sc.nextInt();
		}
		solution(num, numA, numB);
	}
	public static void solution(int n, int[] a, int[] b) {
		String ans="";
		for(int i=0; i<n; i++) {
			if(a[i]==b[i]) {
				ans+="D";
			}else if(a[i]==1 && b[i]==3) {
				ans+="A";
			}else if(a[i]==2 && b[i]==1) {
				ans+="A";
			}else if(a[i]==3 && b[i]==2) {
				ans+="A";
			}else {
				ans+="B";
			}
		}
		for(char x : ans.toCharArray()) {
			System.out.println(x);
		}
	}
}

>>해설

a의 값과 b의 값을 비교하는데 두개의 값이 같으면 비긴 것이므로 문자열 ans에 "D"값을 저장한다.

그리고 a와 b 중에서 이긴 경우를 정하는데 a가 이길 경우의 분기문을 거쳐서 이 조건이 모두 아닌 경우는 b가 이긴 경우가 된다.

 1)  a가 1일 때(가위) b가 3(보) 이여만 a가 이긴 것이다. 

 2) a가 2일 때(바위) b가 1(가위) 이여만 a가 이긴 것이다.

 3) a가 3일 때(보) b가 2(가위) 이여만 a가 이긴 것이다.

그 나머지 경우는 b가 이긴 것이 된다.

 

ans에 문자열로 저장되는데 이것을 문자형 배열로 바꿔서 문자 하나씩 출력한다.

 

'Computer Science > Algorithm' 카테고리의 다른 글

[Inflearn] 소수  (0) 2022.11.23
[Inflearn] 피보나치 수열  (0) 2022.11.20
[Inflearn] 보이는 학생  (0) 2022.11.13
[Inflearn] 큰 수 출력하기  (0) 2022.11.13
[Inflearn] 암호  (0) 2022.11.13