• Home

My Codegate

  • Home

백준 11866 요세푸스 문제 0 자바 문제풀이

2023/12/14 Posted by Codegate Java No Comments
백준 11866 요세푸스 문제 0 자바 문제풀이

문제 링크

해당 문제는 풀이는 단순하지만 요세푸스 문제가 뭔 말인지 이해해야 풀 수 있다는 문제가 있는데, 내용을 요약해보자면 두 숫자를 입력을 받아 왼쪽 숫자로 1부터 N까지 깔아준 후, 오른쪽 숫자인 K번째 숫자들을 제외하면서 출력 양식에 맞게 순서를 나열해주면 되는데

입력으로 7, 3을 받았으니 1 2 3 4 5 6 7 이렇게 깔리게 되는데
3번째 숫자인 3이 빠지고 이후 3차례 뒤인 6이 빠지면 1 2 4 5 7이 되는데
이후에는 7..1..2 이런 식으로 이동하다가 3번째 숫자인 2가 빠지고
4..5..7 이렇게 가다가 7이 빠지는 식으로 3번째 숫자를 빼주면 된다는 거다

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {

  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String[] arr = br.readLine().split(" ");
    ArrayList<Integer> list = new ArrayList<>();

    for (int i = 1; i <= Integer.parseInt(arr[0]); i++) {
      list.add(i);
    }

    int i = 0;
    int order = 0;
    int incre = Integer.parseInt(arr[1]);
    StringBuilder ans = new StringBuilder("<");
    while (!list.isEmpty()) {
      order++;
      if (order == incre) {
        if (list.size() == 1) {
          ans.append(list.get(i)).append(">");
        } else {
          ans.append(list.get(i)).append(", ");
        }
        order = 0;
        list.remove(i);
        i--;
      }
      i++;
      if (i >= list.size()) {
        i = 0;
      }
    }
    
    System.out.println(ans);
    
  }
}

코드로 풀어보자면 입력받은 값에서 왼쪽값인 1부터 N까지 list에 넣어준 후, List가 빌 때까지 계속 while문을 돌려줘야 하는데 핵심은 입력받은 우측의 값인 K번째마다 list에서 값을 빼서 StringBuilder에 계속 담아주고, index가 list의 크기를 넘어가면 0으로 돌리는 식으로 진행해서 모든 수를 빼주면 끝이 난다.

No Comments
0

Leave a Reply Cancel Reply

Introduction

My Codegate

Latest Posts

  • Google Search Console API 연동방법
  • 인텔리제이 Gradle Dependency 최신 버전 보는 방법
  • Wallet-Tracker 개발일지
  • Moralis API 자바로 호출방법
  • IntelliJ Commit 후 Push 따로 하는 방법

Categories

  • My Project (4)
  • Java (42)
  • Algorithm (161)
    • Java (152)
    • Algorithm Knowledge (3)
    • Algorithm site usage (6)
  • Vue.js (1)
  • Spring (4)
  • Docker (2)
  • IntelliJ (20)
  • Uncategorized (7)

Recent Comments

  • Codegate on Hello world!
  • A WordPress Commenter on Hello world!

© 2025 — mycodegate.com

Prev Next