📝 문제
🔑 풀이 과정
① 제거, 삽입이 반복해서 일어나기 때문에 일반 배열로는 구현이 힘들다.
링크드리스트를 사용해서 구현한다.
② 맨 위에 놓여있는 카드를 링크드 리스트의 맨 앞에 있다고 생각한다.
③
(1)맨 위에 있는 카드를 버리기
(2) 그 다음, 맨 위에 있는 카드를 제일 아래로 옮기기
이 2개를 하나의 루틴으로 묶어서 반복문 처리한다.
④ 반복하다가 링크드 리스트의 크기가 1이 되면, 남은 카드를 읽는다.
[그림으로 표현한 풀이]
🔓 답안
import java.io.*;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
LinkedList<Integer> list = new LinkedList<>();
for(int i = 1; i <= N; i++){
list.add(i);
}
while(list.size() > 1){
list.remove();
int n = list.remove();
list.add(n);
}
bw.write(list.get(0) + "\n");
bw.flush();
bw.close();
}
}
🖤 알고리즘 분류
- 자료 구조
- 큐
'PS > Baekjoon' 카테고리의 다른 글
[Baekjoon] 17219 - 비밀번호 찾기 (0) | 2023.03.24 |
---|---|
[Baekjoon] 10773 - 제로 (0) | 2023.03.23 |
[Baekjoon] 11050 - 이항 계수 1 (0) | 2023.03.21 |
[Baekjoon] 1978 - 소수 찾기 (0) | 2023.03.21 |
[Baekjoon] 5554 - 심부름 가는 길 (0) | 2023.03.03 |
댓글