/ BOJ

BOJ_2164_카드2_JAVA

문제 : 카드2

링크 : BOJ_2164_카드2

접근 방식

큐를 통해서 단방향 순환을 시켜주면 되는 문제이다.

fornt를 먼저 poll 시켜주는 것이 1번, 그 후의 front poll하여 다시 같은 Queue에 offer 해주는 과정을 queue의 size가 1이 될 때까지 반복하면 된다.

풀이 방법

  1. Queue를 선언하여 LinkedList 객체를 생성한다.

  2. 1~N까지 Queue에 offer 해준다.

  3. Queue size가 1이 될 때까지 첫 번째 인자 poll, 그 후 다음 인자 poll하여 다시 offer. 이 과정을 반복한다.

  4. 반복문을 마친 후 Queue에 남아있는 값을 poll하여 출력해준다.

소스 코드


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;

public class BOJ_2164_카드2 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));


		int N = Integer.parseInt(in.readLine());
		Queue<Integer> queue = new LinkedList<>();
		for(int i=1;i<=N;i++) {
			queue.offer(i);
		}

		while(queue.size() != 1) {
			queue.poll();
			int num = queue.poll();
			queue.offer(num);
		}

		System.out.println(queue.poll());
	}

}