https://www.acmicpc.net/problem/2164
- 풀이
제일 위에 있는 카드를 버리거나, 맨 뒤로 넣기만 하면 되므로 큐를 사용하면 된다.
N까지 숫자가 들어있는 큐를 만들고, 큐의 사이즈가 1이 될 때까지 버리기, 맨 뒤에 넣기를 반복한다.
- 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Queue;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
// 정수 N 입력
int N = Integer.parseInt(bf.readLine());
// 큐 생성
Queue <Integer> que = new ArrayDeque<>();
for (int i = 1; i<N+1; i++) {
que.add(i);
}
while(que.size()>1) { // 카드가 1개 남을 때까지
que.poll(); // 바닥에 버리기
que.add(que.poll()); // 맨 뒤에 넣기
}
// 결과 출력
System.out.println(que.peek());
}
}
'개발 > 코딩테스트' 카테고리의 다른 글
백준 2960번: 도영이가 만든 맛있는 음식 [JAVA] (0) | 2023.03.15 |
---|---|
백준 1759번: 암호만들기 [JAVA] (0) | 2023.03.15 |
백준 17608번: 막대기 [JAVA] (1) | 2023.03.15 |
백준 1158번: 요세푸스 문제 [JAVA] (0) | 2023.03.15 |
백준 2839번: 설탕 배달 [파이썬] (0) | 2022.05.19 |
댓글