설명
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.ArrayList;
import java.util.Scanner;
public class Main2_3 {
public ArrayList<Character> Solution(int n, int[] a, int[] b) {
ArrayList<Character> answer = new ArrayList<>();
for (int i = 0; i < n; i++) {
if(a[i] > b[i]) { // a가 이김
if(a[i]==3 && b[i]==1) {
answer.add('B'); // a가 보, b가 가위인 경우
continue;
}
answer.add('A');
}
else if(a[i] < b[i]) { // b가 이김
if(a[i]==1 && b[i]==3) {
answer.add('A'); // b가 보, a가 가위인 경우
continue;
}
answer.add('B');
}
else if(a[i] == b[i]) answer.add('D');
}
return answer;
}
public static void main(String[] args) {
Main2_3 T = new Main2_3();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
int[] b = new int[n];
for (int i = 0; i < n; i++) {
b[i] = sc.nextInt();
}
for(char x : T.Solution(n, a, b)) {
System.out.println(x);
}
}
}
선생님 풀이
import java.util.ArrayList;
import java.util.Scanner;
public class Main2_3 {
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) {
Main2_3 T = new Main2_3();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
int[] b = new int[n];
for (int i = 0; i < n; i++) {
b[i] = sc.nextInt();
}
for(char x : T.Solution(n, a, b).toCharArray()) {
System.out.println(x);
}
}
}
비기는 경우, A가 이기는 경우만 조건문을 이용해서 일일이 나열하고 나머지 경우는 모두 B가 이기는 걸로 하는 깔끔한 코드다.
나는 A가 이긴 경우와 B가 이긴 경우를 꼭 나눠서 코딩하는 버릇이 있는데 이렇게 간단히 구현할 수 있다니 오늘도 하나 더 알아간다.
결과
'Algorithm > Inflearn' 카테고리의 다른 글
[Inflearn] 자바 알고리즘 문제풀이 #02-04 4. 피보나치 수열 (0) | 2022.11.09 |
---|---|
[Inflearn] 영리한 프로그래밍을 위한 알고리즘 - 순환 (Recursion) 의 개념과 기본 예제 1 (0) | 2022.11.08 |
[Inflearn] 자바 알고리즘 문제풀이 #02-02 2. 보이는 학생 (0) | 2022.11.07 |
[Inflearn] 자바 알고리즘 문제풀이 #02-01 1. 큰 수 출력하기 (0) | 2022.11.07 |
[Inflearn] 자바 알고리즘 문제풀이 #01-12 12. 암호 (0) | 2022.11.06 |