본문 바로가기

ALGORITHM

백준 2164 카드2 (Java)

1. 문제 링크

 

2164번: 카드2

N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가

www.acmicpc.net

 

2. 문제 및 입출력예제

 

3. 문제 풀이

큐를 이용해서 전부 큐에 넣은 후

하나는 꺼내서 버리고 하나는 다시 넣는 방식으로 진행했다.

 

하나만 남았을 경우 종료해야 하는데

if문 위치를 적절하게 두 번 넣어서 예외가 발생하지 않도록 했다.

 

4. 코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Queue;

public class Main {
	private static StringBuilder sb = new StringBuilder();

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		Queue<Integer> queue = new ArrayDeque<>();

		for(int i=1;i<N+1;i++) {
			queue.offer(i);
		}
		
		int size = queue.size();
		while(true) {
			if(size ==1) {
				break;
			}
			queue.poll();
			size--;
			if(size == 1) {
				break;
			}
			int num = queue.poll();
			queue.offer(num);
		}
		
		System.out.println(queue.poll());
	}
}

 

'ALGORITHM' 카테고리의 다른 글

백준 11727 2xn 타일링 2 (Java)  (0) 2023.02.16
백준 11726 2xN 타일링 (Java)  (0) 2023.02.15
백준 7576 토마토 (Java)  (0) 2023.02.13
백준 14501 퇴사 (Java)  (0) 2023.02.12
백준 1244 스위치 켜고 끄기 (Java)  (0) 2023.02.11