2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
문제
풀이
카드 번호
1
2
3
...
N-2
N-1
N
특정 동작 카드가 한 장 남을때까지 반복
1) 제일 위 카드를 바닥에 드랍
2) TOP 카드를 BOTTOM 카드 밑으로 이동
각 동작 후 남은 카드 개수 확인
목표 : 제일 마지막에 남는 카드를 구하기
조건 (1<= N <= 500,000)
자료구조 : 큐 사용
import java.io.*;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static Queue<Integer> card;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
// 자료구조 큐 선언
card = new LinkedList<>();
// 1부터 ~ N까지 삽입
for (int i = 0; i < N; i++) {
card.add(i+1);
}
// 특정 동작
cardAction(card);
System.out.println(card.poll());
}
public static void cardAction(Queue<Integer> queue) {
int swap = 0;
while (queue.size() > 1) {
// 1번 TOP 버리기
queue.poll();
// 2번 TOP을 BOTTOM 밑에 넣기
swap = queue.poll();
queue.add(swap);
}
}
}
함수로 사용하고 싶어서 따로 뺐다. 쉬운 문제이다.
'baekjoon > Data_Structure' 카테고리의 다른 글
백준 5639번 : 이진 검색 트리 [자바] (0) | 2025.04.02 |
---|---|
백준 17298번 : 오큰수 자바 (0) | 2024.08.27 |
백준 1874번 : 스택 수열 자바 (0) | 2024.07.07 |