Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 10991
- 연속부분수열
- 두 배열 합치기
- 10992
- 뒤집은 소수
- 최대 길이
- 임시반장 정하기
- 격자판
- 자바
- 점수계산
- 코테준비
- 가장 짧은 문자거리
- Two Pointer
- 배열
- 아스키코드
- array
- 누적 계산
- 알고리즘
- GitHub #Commit #BaekJoon
- 보이는 학생
- 투 포인터
- ArrayList
- java
- Pointer
- 큰 수 출력하기
- 인프런
- 등수구하기
- 백준
- 공통원소 구하기
- 모든행과열대각선의합
Archives
- Today
- Total
ezhoon
[인프런] 02_03 가위 바위 보 본문
문제
- 총 N번의 게임을 하여 A가 이기면 A, B가 이기면 B를 출력하고 비기는 경우에는 D를 출력한다.
가위 : 1 바위 : 2 보 : 3 출력 예시
이해
- N이 5라고 했을 때 아래와 같다.
회수 | 1 | 2 | 3 | 4 | 5 |
A | 2 | 3 | 3 | 1 | 3 |
B | 1 | 1 | 2 | 2 | 3 |
승자 | A | B | A | B | D |
- N을 입력받고 N의 수만큼 for문으로 A의 배열, B의 배열에 가위 바위 보 값을 입력한다.
- 비길 경우 'D'
- A : 가위 / B: 보 -> 'A'
- A : 바위 / B : 가위 -> 'A'
- A : 보 / B : 바위 -> 'A'
- 위의 경우를 제외하고는 전부다 B가 이긴 경우이므로 더 이상 if문을 사용할 필요가 없다.
- 이번에도 StringBuilder 이용해서 append 해 볼 생각이다.
⚠️ 주의사항
- 비기는 경우와 A가 이기는 모든 경우의 수 말고는 B가 이기는 경우이다.
- 가위 바위 보 헷갈리지 않도록 조심하기
풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
* 1 가위 1은 2한테 지고 3한테 이긴다.
* 2 바위 2는 1을 이기고 3한테 진다.
* 3 보 3은 1한테 지고 2한테 이기고.
*/
public class Java_02_03 {
public String solution(int N, int[] ATemp, int[] BTemp) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N; i++) {
// A가 이기는 경우 3개 처리 + 비기는 경우 한 뒤 나머지는 B가 이긴 것이므로 else 처리
if (ATemp[i] == BTemp[i]) { // 비길 경우
sb.append("D").append("\n");
}
else if (ATemp[i] == 1 && BTemp[i] == 3) { // 가위 보
sb.append("A").append("\n");
}
else if (ATemp[i] == 2 && BTemp[i] == 1) { // 바위 가위
sb.append("A").append("\n");
}
else if (ATemp[i] == 3 && BTemp[i] == 2) { // 보 바위
sb.append("A").append("\n");
}
else{ // A가 이기는 경우가 아니고 비기는 경우도 아니면 B가 승리이므로 else로 처리
sb.append("B").append("\n");
}
}
return sb.toString();
}
public static void main(String[] args) throws IOException {
Java_02_03 T = new Java_02_03();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // 가위바위보 게임 수
StringTokenizer A = new StringTokenizer(br.readLine(), " "); // A 학생의 가위바위보 값 토큰 저장
StringTokenizer B = new StringTokenizer(br.readLine(), " "); // B 학생의 가위바위보 값 토큰 저장
int[] ATemp = new int[N]; // A 배열 초기화
int[] BTemp = new int[N]; // B 배열 초기화
for (int i = 0; i < N; i++) {
ATemp[i] = Integer.parseInt(A.nextToken()); // Atemp에 A학생 가위바위보 토큰 값 저장
BTemp[i] = Integer.parseInt(B.nextToken()); // Btemp에 A학생 가위바위보 토큰 값 저장
}
System.out.println(T.solution(N, ATemp, BTemp));
}
}

'[Java] 인프런 문제풀이 > Array(배열)' 카테고리의 다른 글
[인프런] 02_06 뒤집은 소수 (0) | 2022.01.21 |
---|---|
[인프런] 02_05 소수 (에라토스테네스 체) (0) | 2022.01.21 |
[인프런] 02_04 피보나치 수열 (0) | 2022.01.21 |
[인프런] 02_02 보이는 학생 (0) | 2022.01.21 |
[인프런] 02_01 큰 수 출력하기 (0) | 2022.01.21 |