백준 알고리즘 정리 (자료구조 - 2164번)

황제연·2024년 3월 25일
0

알고리즘

목록 보기
16/169
post-thumbnail
문제번호제목난이도
2164카드2실버4

2164번 카드2

해결코드:

import java.io.*;
import java.util.*;

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());
        Deque<Integer> de = new ArrayDeque<>();
        for (int i = 0; i < n; i++) {
            de.addLast(i+1);
        }

        while(de.size() > 1){
            de.pollFirst();
            if(de.size() == 1){
                break;
            }
            de.addLast(de.pollFirst());
        }
        bw.write(de.getLast()+"");

        br.close();
        bw.close();
    }

}

고민의 시간과 해결 방법:

  1. 앞에서 빼서 뒤에 넣는다? 바로 자료구조 덱을 떠올렸다.
  2. 주어진 입력값을 큐 형태로 덱에 넣어준다
  3. 덱의 크기가 1보다 큰 동안에 반복해서 덱의 맨 앞의 값을 빼주고 덱의 맨 뒤로 맨 앞의 값을 빼서 넣어준다
  4. 이때 3번의 두 진행 로직 사이에 덱의 크기를 한번더 확인해서 1이면 종료하도록 한다
  5. 3~4번 과정을 통해 덱에 남아있는 한가지 값을 출력한다.

문제링크:

2164번 - 카드2

profile
Software Developer

0개의 댓글