Recent Posts
Link
250x250
오늘보다 더 나은 내일의 나에게_
자바 알고리즘 문제 풀이 Array Q03_가위 바위 보 본문
728x90
설명
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 3A
B
A
B
D
코드
내가 입력한 코드
package Array; import java.util.Scanner; public class Q03 { public String solution(int num, int[] arr1, int[]arr2) { String answer = ""; for (int i = 0; i < num; i++) { if((arr1[i]==1&&arr2[i]==2)||(arr1[i]==2&&arr2[i]==3)||(arr1[i]==3&&arr2[i]==1)) { answer += "B"; }else if((arr1[i]==1&&arr2[i]==3)||(arr1[i]==2&&arr2[i]==1)||(arr1[i]==3&&arr2[i]==2)) { answer += "A"; }else { answer += "D"; } answer += "\n"; } return answer; } public static void main(String[] args) { Q03 T = new Q03(); Scanner kb = new Scanner(System.in); int num = kb.nextInt(); int[] arr1 = new int[num]; int[] arr2 = new int[num]; for (int i = 0; i < num; i++) { arr1[i] = kb.nextInt(); } for (int i = 0; i < num; i++) { arr2[i] = kb.nextInt(); } System.out.println(T.solution(num,arr1,arr2)); } }
해설 코드import java.util.*; 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"; 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); } }
풀이 및 정리
내가 풀이한 코드는 A가 이길 경우, B가 이길 경우, 비기는 경우로 3가지 경우를 고려 조건문을 작성했다.
하지만 비기는경우와 A, B 둘 중 한명이 이기는경우와 나머지, 이렇게 조건문을 작성하면 훨씬 코드가 단축 된다.
조건문으로 생각해보면 아래와 같다.
비기는 경우는 값 : D ===> if문
A, B 둘 중 한명이 이기는 경우 값 : A 또는 B ===> else if문
그리고 나머지 값 : A 또는 B ===> else문
728x90
'ALGORITHM > inflearn_javaAlgorithm' 카테고리의 다른 글
자바 알고리즘 문제 풀이 Array Q05_소수(에라토스테네스 체) (0) | 2022.02.12 |
---|---|
자바 알고리즘 문제 풀이 Array Q04_피보나치 수열 (0) | 2022.02.10 |
자바 알고리즘 문제 풀이 Array Q02_보이는 학생 (0) | 2022.02.09 |
자바 알고리즘 문제 풀이 Array Q01_큰 수 출력하기 (0) | 2022.02.07 |
자바 알고리즘 문제 풀이 String Q12_암호 (0) | 2022.02.06 |
Comments