티스토리 뷰
728x90
문제
- 1부터 N까지의 번호가 붙은 N장의 카드
- 카드는 1번부터 N번까지 순서대로 놓여 있음
- 카드가 한 장 남을 때까지 아래 내용 반복
1. 제일 위에 있는 카드 버리기
2. 그 다음 제일 위에 있는 카드 제일 아래 있는 카드 밑으로 옮기기
- 제일 마지막에 남게 되는 카드 출력
해결방법
queue에 순서대로 카드를 넣고, 맨 위 카드는 버리고 그 다음 카드를 맨 뒤로 다시 넣는 과정을 반복하였다. 카드가 한 장 남았을 경우에는 해당 카드를 출력할 수 있도록 하였다.
코드
import java.io.*;
import java.util.*;
class Main{
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // 카드 장수 입력 받기
LinkedList<Integer> card = new LinkedList<>(); // 카드 queue
for(int i = 1; i<=N; i++){
card.add(i); // 카드 한 장씩 queue에 넣기
}
while(true){
if(card.size() == 1){ // 카드가 1장 남았을 때에는
System.out.println(card.poll()); // 해당 카드 출력
break;
}
card.poll(); // 맨 위 카드 버리기
card.add(card.poll()); // 그 다음 카드 맨 뒤로 보내기
}
br.close();
}
}
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 2292번 벌집(JAVA) (0) | 2022.07.17 |
---|---|
[백준] 2231번 분해합(JAVA) (0) | 2022.07.17 |
[백준] 2108번 통계학(JAVA) (0) | 2022.07.14 |
[백준] 1978번 소수 찾기(JAVA) (0) | 2022.07.14 |
[백준] 1966번 프린터 큐(JAVA) (0) | 2022.07.13 |
댓글