728x90
반응형
[백준 1057] 토너먼트
문제 출처 : https://www.acmicpc.net/problem/1057
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Problem1057 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); StringTokenizer st = new StringTokenizer(str, " "); int num = Integer.parseInt(st.nextToken()); // 참가자 수 int a = Integer.parseInt(st.nextToken()); // 김지민 int b = Integer.parseInt(st.nextToken()); // 임한수 ArrayList<Integer> arr = new ArrayList<Integer>(); for (int i = 0; i < num; i++) { if(i == a-1 || i == b-1) arr.add(1); else arr.add(0); } Queue<Integer> q = new LinkedList<Integer>(); int cnt = 0; boolean flag = true; while(arr.size() != 1) { cnt++; for (int i = 0; i < arr.size(); i+=2) { if(arr.size()%2==1 && i==arr.size()-1) { // 홀수일 때 q.add((arr.get(i))); continue; } q.add((arr.get(i) | arr.get(i+1))); if(arr.get(i) == 1 && arr.get(i+1) == 1) { flag = false; break; } } if(!flag) break; int size = q.size(); arr.clear(); for (int i = 0; i < size; i++) { arr.add(q.poll()); } } System.out.println(cnt); } } | cs |
728x90
반응형
'Algorithm > 백준(BOJ)' 카테고리의 다른 글
[백준 2667] 단지번호 붙이기 (0) | 2019.01.29 |
---|---|
[백준 1874] 스택 수열 (1) | 2019.01.24 |
[백준 8979] 올림픽 (0) | 2019.01.20 |
[백준 10819] 차이를 최대로 (0) | 2019.01.20 |
[백준 1182] 부분집합의 합 (1) | 2019.01.17 |