본문 바로가기

Algorithm/Baekjoon

[백준_JAVA_알고리즘] 2164 카드2

 

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main {
	static Queue<Integer> queue = new LinkedList<>();
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt();
		
		for(int i = 1; i <= N; i++) {
			enqueue(i);
		}
        while (queue.size() > 1) {
        	queue.poll();
        	queue.add(queue.poll());
        }
        System.out.println(queue.poll());
		
		scanner.close();
	}
	public static int poll() {
		return queue.poll();
	}
	public static void enqueue(int temp) {
		queue.add(temp);
	}
}

큐를 이용해서 구현할 수 있다.

poll()는 큐의 값을 선택해서 제거 후 그 값을 가지고 있는다.

enqueue()는 값을 맨 뒤에 추가한다.

 

맨 첫 번째 값, 그리고 홀수 번 째 값들은 버린다.

두 번째 값, 그리고 짝수 번 째 값들은 선택해서 제거 후 값을 맨 뒤에 추가한다.