[백준] 카드2 2164 java

오늘내일·2024년 6월 4일
0

최적의 풀이는 아니지만 문제 접근하는 방법이 참고가 될 수 있지 않을까해서 올려봅니다. 코드에 주석 참고해주세요.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;

public class Main {
  // 1번 카드 제일 위, N번 카드 제일 아래
  // 1. 제일 위 카드 버림
  // 2. 그 다음 카드를 제일 아래로 옮김
  // 마지막 한장 남은 카드는?  --> 뭔가 순환되는 느낌이므로 Queue 쓰면 될듯
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int n = Integer.parseInt(br.readLine());

    // Q에 카드를 순서대로 넣어놓자
    Queue<Integer> q = new LinkedList<>();
    for (int i = 1; i <= n; i++) {
      q.offer(i);
    }

    // 1장 남을때까지 규칙 반복
    while (q.size() > 1) {
      q.poll();
      int top = q.poll();
      q.add(top);
    }

    System.out.println(q.poll());
  }
}
profile
다시 시작합니다.

0개의 댓글