백준(Backjoon) 2164, 카드2

2021. 6. 25. 21:50CodingTest

문제풀이

자료구조중 큐(Queue) 구조를 이용하여 문제를 해결한다. 첫번째는 큐에서 제일 앞의 수를 제거하고 그다음 2번째인 수를 제거하고 제거한 수를 다시 추가한다. 이러한 과정을 큐 구조에서 1개가 될때까지 계속 반복한다. 최종적으로 남은 1개의 카드의 숫자를 반환하고 종료한다.

 

소스풀이

public class Main {
	public static int solution(Queue<Integer> q)
	{
		while(q.size()!=1)	// queue 구조에서 1개가 남을때까지 반복
		{
			q.poll();	// 카드한장을 버림
			q.add(q.poll());	// 제일 위의 카드를 제일 뒤로 보냄
		}
		return q.peek();	// queue 구조의 마지막 1개 남은 카드의 수를 반환
	}
	
	public static void main(String args[]) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		Queue<Integer> q = new LinkedList<Integer>();
		for(int i=1;i<=n;i++)
		{
			q.add(i);
		}
		
		System.out.println(solution(q));
	}
}

'CodingTest' 카테고리의 다른 글

백준(Backjoon) 10798, 세로읽기  (0) 2021.06.30
백준(Backjoon) 10816, 숫자 카드 2  (0) 2021.06.28
백준(Backjoon) 10866, 덱  (0) 2021.06.25
백준(Backjoon) 1966, 프린터 큐  (0) 2021.06.25
백준(Backjoon) 1212, 8진수 2진수  (0) 2021.06.24