💡 문제
두사람이 가위바위보를 총 n 번 진행
a 가 이기면 a를 출력하고 b가 이기면 b를 출력한다.
비길경우 d를 출력한다.
1은 가위 2는 바위 3은 보 를 의미한다.
입력
첫번째 줄 입력 : 자연수 n (가위바위보 횟수)
두번째 줄 입력 : a가 낼 자연수 1,2,3 을 n개 입력
세번째 줄 입력 : b가 낼 자연수 1,2,3 을 n개 입력
입력 예시
5
2 3 3 1 3
1 1 2 2 3
출력 예시
A
B
A
B
D
💡 1. 내 풀이 과정
항상 기억하자. 문자열을 내부 데이터 값을 비교할 땐 equlas!!
그전에도 이걸로 해멨던 적이 있으면서 똑같이 한시간 넘게 이러고 있다.
풀이는 간단하니까 간단하게 정리만 해보겠다.
일단 처음 몇번의 가위바위보를 할 지 정하는 숫자와
각 a, b 가 냈던 가위바위보 정보를 받아야 한다.
그래서 입력을 총 3번 받았으며 각 배열을 선언해서 받고 solution으로 보내줬다.
arr 와 arr 2 값을 받은 solution 에서는
일단 두 사람이 낸 정보가 같은경우는 d가 출력이 되므로 먼저 처리해주고
그후에 a가 냈을때 기준으로 b의 낸 결과에 따라 누가 이겼는 지 정보를 담아주면 된다.
🔍 기억하자 String의 동일성을 따질 때에는 equals!!!!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public String[] solution(String arr[], String arr2[]) {
String[] answer= new String[arr.length];
for(int i =0; i<arr.length; i++) {
System.out.println("뭐들어옴?" +arr[i] +arr2[i]);
System.out.println(arr[i].equals(arr2[i]));
if(arr[i].equals(arr2[i])) {
answer[i]="D";
}else if(arr[i].equals("1")) {
if(arr2[i].equals("2")) {
answer[i]="B";
}else {
answer[i]="A";
}
}else if(arr[i].equals("2")) {
if(arr2[i].equals("3")) {
answer[i]="B";
}else {
answer[i]="A";
}
}else if(arr[i].equals("3")){
if(arr2[i].equals("1")) {
answer[i]="B";
}else {
answer[i]="A";
}
}
}
return answer;
}
public static void main(String[] args) throws NumberFormatException, IOException {
Main T = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
StringTokenizer st2 = new StringTokenizer(br.readLine());
String[] arr = new String[num];
String[] arr2 = new String[num];
for(int i =0; i<num; i++) {
arr[i]=st.nextToken();
arr2[i]=st2.nextToken();
}
for(String x : T.solution(arr, arr2)) {
System.out.println(x);
}
}
}
💡 2. 강사님 풀이
강사님 풀이 같은 경우는 애초에 String 으로 비교 하지 않고 int 값 자체로 받아서(Scanner로)
== 으로 비교해도 됐다.
또 비교할때 비기는 경우를 제외해주고 a가 이기는 경우만 먼저 제외해주고 나머지는 b가 이기니까
위에 처럼 정리하는게 훨씬 생각하기 깔끔 할 수도 있을것 같다.
answer 값은 String 에 이어 붙이는 형태로 answer 을 return 받고
출력 부분에서 T.solution 에 toCharArray 를 통해 배열에 담은것을 for each 로 한줄씩 출력해준다.
코테 관련해서 많이 부담스러웠는데 강의를 통해 푸는 방법들을 배우니 이 시간이 즐겁습니다.
진짜 기능하나하나 다양한 방법으로 잘 가르쳐주십니다.
출처 : 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 대시보드 - 인프런 | 강의 (inflearn.com)
'알고리즘 > Java 코딩 테스트 준비' 카테고리의 다른 글
[Java] 뒤집은 소수 (0) | 2023.02.03 |
---|---|
[Java] 피보나치 수열 (0) | 2023.02.02 |
[Java] 보이는 학생(키 순서대로 세우기) (0) | 2023.01.31 |
[Java] 큰 수 출력하기. (0) | 2023.01.31 |
[Java] 아스키코드 비밀 암호 해독하기 (0) | 2023.01.30 |
댓글