// https://www.acmicpc.net/problem/11866
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Problem11866 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
Queue<Integer> q = new LinkedList<>();
for (int i = 1; i <= n; i++) {
q.add(i);
}
System.out.print("<");
while (q.size() > 1) {
for (int i = 1; i < k; i++) {
q.add(q.poll());
}
System.out.print(q.poll() + ", ");
}
System.out.print(q.poll() + ">");
}
}
▶ 문제를 보자마자 일단 큐가 생각났고, 그래서 큐를 사용해 직접 풀어보았다. 그런데 요세푸스 문제에 대해 찾아보니, 큐를 사용하는 방법 외에도 좋은 방법들이 많았다. 지금 내가 작성한 코드는 시간복잡도가 O(n * k)이므로 효율적인 알고리즘은 아니라고 판단한다. 추후 개선된 코드로 다시 작성하도록 하겠다.
728x90
'프로그래밍 > 풀었어' 카테고리의 다른 글
[Java] BOJ 4134: 에라토스테네스의 체 (1) | 2025.02.04 |
---|---|
[Java] BOJ 10814: 나이순 정렬, 2차원 배열 (1) | 2025.01.22 |
[Java] BOJ 11650: 람다 표현식, 정렬 조건 부여하기 (1) | 2025.01.16 |
[Java] BOJ 2609: 유클리드 호제법, 기약분수 만들기 (1) | 2025.01.15 |
[Java] BOJ 2775: 2차원 배열 (0) | 2025.01.14 |