[BOJ 14696] 딱지놀이
업데이트:
문제
- BOJ 14696
- 문제의 저작권은 Baekjoon Online Judge에 있습니다.
접근방식
입력을 받으면서 a카드배열과 b카드배열을 만든 후 카드 번호가 큰 순서대로 비교를 해서 개수가 더 많은 쪽을 찾으면 for문을 중단하고 이긴 사람을 출력한다. 무승부를 고려하기 위해 boolean형 변수 flag를 선언해서 만약 다 돌았는데도 승부가 나지 않는다면 flag가 그대로 false이므로 이때 무승부 ‘D’를 출력한다. 간단히 이중for문으로 풀리는 문제이다.
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine()); //총 라운드 수
StringTokenizer st;
for(int i=0; i<N; i++) {
//a의 카드
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int[] card_A = new int[5]; //1,2,3,4 카드 의미
for(int j=0; j<a; j++) {
int card = Integer.parseInt(st.nextToken());
card_A[card]++;
}
//b의 카드
st = new StringTokenizer(br.readLine());
int b = Integer.parseInt(st.nextToken());
int[] card_B = new int[5]; //1,2,3,4 카드 의미
for(int j=0; j<b; j++) {
int card = Integer.parseInt(st.nextToken());
card_B[card]++;
}
//큰 번호부터 a,b 카드 개수 비교
boolean flag = false;
char Ans = ' ';
for(int j=4; j>=1; j--) {
if(card_A[j] > card_B[j]) {
flag = true;
Ans = 'A';
break;
}
if(card_A[j] < card_B[j]) {
flag = true;
Ans = 'B';
break;
}
}
//모두 비교했는데 무승부라면
if(!flag) bw.write("D"+"\n");
else bw.write(Ans+"\n");
}
br.close();
bw.flush();
bw.close();
}
}