본문 바로가기
Blog/Education

99클럽 코테 스터디 29일차 TIL + queue

by 코젼 2024. 4. 22.
728x90
반응형

백준

https://www.acmicpc.net/problem/1158

 

1158번: 요세푸스 문제

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net


- 오늘의 학습 키워드 : queue

- 공부한 내용 본인의 언어로 정리하기

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

public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    int N = Integer.parseInt(st.nextToken());
    int K = Integer.parseInt(st.nextToken());
    Queue<Integer> queue = new LinkedList<>();
    StringBuilder sb = new StringBuilder();
    sb.append("<");

    for (int i=1; i<=N; i++) queue.add(i); // 1 ~ N까지의 수 저장
    while (true) {
      if (queue.size() == 1) { // queue가 1개 남은 경우
        sb.append(queue.poll()).append(">");
        break;
      }
      int cnt = 1;
      while (true) {
        if (cnt == K) { // K번째인 경우 제거되는 순서 값 저장
          sb.append(queue.poll()).append(", ");
          break;
        } else { // K번 만큼 요세푸스 순열 동작
          cnt++;
          queue.add(queue.poll());
        }
      }
    }
    System.out.println(sb);
  }
}

- 오늘의 회고 : 자료 구조 중, queue에 대해서 복습할 수 있는 문제


99클럽 1기를 수강하면서 작성한 글입니다.

https://99club.oopy.io/

 

99클럽-1기 모집 중

현직 개발자와 함께하는 코테 스터디

99club.oopy.io

 

728x90
반응형

댓글