[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();
	}
}

카테고리:

업데이트: