본문 바로가기
PS/Baekjoon

[Baekjoon] 2164 - 카드2

by 서현 SEOHYEON 2023. 3. 22.

📝 문제

 

 

 

🔑 풀이 과정

① 제거, 삽입이 반복해서 일어나기 때문에 일반 배열로는 구현이 힘들다.

링크드리스트를 사용해서 구현한다.

 

② 맨 위에 놓여있는 카드를 링크드 리스트의 맨 앞에 있다고 생각한다.

 

(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

댓글