백준

백준 [2164]번: 카드2 ( Java )

하루우울루 2023. 2. 12. 22:23

https://www.acmicpc.net/problem/2164

 

2164번: 카드2

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

www.acmicpc.net

 

개발환경은 eclipse를 사용했습니다.

 

 

Code

import java.util.*;
import java.io.*;

public class Main
{
	public static void main(String[] args) throws IOException 
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		Deque<Integer> deque = new LinkedList<>();
		
		StringTokenizer command;
		
		int n = Integer.parseInt(br.readLine());
	
		for(int i=1;i<=n;i++)
		{
			deque.offer(i);
		}
		
		while(deque.size() != 1)
		{
			deque.removeFirst();
			
			deque.offerLast(deque.pollFirst());
			
		}
		
		System.out.print(deque.peekFirst());
	}
}

 

문제가 쉬워서 생각한 대로 풀었더니 바로 풀렸다.

덱 크기가 1개가 남을 때까지 반복을 시키고 

덱에 순서대로 입력을 받은 뒤 (카드)  remove메서드를 이용해서 맨 위카드를 없앴다.

deque.offerLast(deque.pollFirst());  로 맨 위의 카드를 카드 덱 맨 아래로 이동시켰다.

덱의 개념을 보고 바로 풀어서 그런지 쉽게 느껴졌다,

 

그래서 그런지 정답비율이 많이 높더라...