Information Security Study
[백준] 2164: 카드2 본문
자료구조 중 큐를 사용해서 풀 수 있는 문제이다.
맨 윗 카드를 poll()한 뒤 그 다음 카드를 마지막 순서로 변경해 주면 된다.
순서 변경은 두 번째 카드를 poll()해서 변수(tmp)에 저장 후
다시 큐에 offer(tmp)해주면 된다.
입출력 예시다.
package boj;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.EmptyStackException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
// 맨 윗장 버리고 다음장은 마지막장으로 이동
public static void main(String[] args) throws IOException, NullPointerException{
// StringBuilder를 사용하여 결과를 한 번에 출력하기 위한 객체 생성
StringBuilder sb = new StringBuilder();
// BufferedReader를 사용하여 입력을 받기 위한 객체 생성
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 저장할 큐 생성
Queue<Integer> queue = new LinkedList<Integer>();
// 입력된 카드의 장수
int T = Integer.parseInt(br.readLine());
int tmp = 0;
int current = 0;
// 1부터 T까지 큐에 삽입
for(int i = 1; i <= T; i++) {
queue.offer(i);
}
// 큐에 카드가 하나만 남을 때까지 반복
while(queue.size() > 1) {
if(queue.isEmpty()) {
break;
}
// 첫 장 버리고 다음장은 마지막장으로 바꾸는 부분 작성
queue.poll();
if(!queue.isEmpty()) {
tmp = queue.poll();
queue.offer(tmp);
}
}
if(!queue.isEmpty()) {
sb.append(queue.poll());
System.out.println(sb);
}
}
}
첫 장을 버리고 카드의 순서를 바꾸는 부분은
while문으로 큐에 카드가 하나만 남을 때까지 반복해주면 된다.
'Programming > JAVA' 카테고리의 다른 글
[백준] 1406: 에디터 (1) | 2024.01.23 |
---|---|
[백준] 1158: 요세푸스 문제 (0) | 2024.01.23 |
[백준] 18258: 큐2 (0) | 2024.01.22 |
[백준] 10845: 큐 (0) | 2024.01.22 |
[백준] 1874: 스택 수열 (0) | 2024.01.22 |