본문 바로가기

Algorithm/문제풀이

[백준] 2164번: 카드2

문제링크https://www.acmicpc.net/problem/2164

 

문제풀이

처음엔 규칙을 찾아서 풀으려고 했는데, 이 문제는 Deque를 사용해서 푸는 문제가 맞는 것 같다.

문제에 나온 순서대로 값 추가 / 삭제를 하면 된다.

 

Deque : https://manzoo.tistory.com/83

 

소스코드

package baekjoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;

public class P2164 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		
		Deque<Integer> q = new ArrayDeque<>();
		for (int i = 1; i <= N; i++) {
			q.offer(i);
		}
		
		while (q.size() > 1) {
			q.poll();
			
			if (!q.isEmpty()) {
				q.offer(q.poll());
			}
		}
		
		System.out.println(q.element());
	}
}