https://www.acmicpc.net/problem/1158
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
문제 접근
K-1번째까지 큐에서 꺼낸 뒤 다시 넣는다.(앞에 있던 걸 뒤로 보냄.)
K번째는 큐에서 꺼낸다.
큐의 사이즈가 1이 될 때까지 반복(남은 하나는 나중에 꺼내서 출)
[ 참고 ] https://steady-coding.tistory.com/21
코드
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> q = new LinkedList<>();
StringBuilder sb = new StringBuilder();
sb.append("<");
for (int i = 1; i <= N; i++) {
q.offer(i);
}
while (q.size() != 1) {
for (int i = 0; i < K - 1; i++) {
q.offer(q.poll());
}
sb.append(q.poll() + ", ");
}
sb.append(q.poll() + ">");
System.out.println(sb);
}
}
'백준' 카테고리의 다른 글
DP #9461: 파도반 수열 [JAVA] (0) | 2023.07.16 |
---|---|
이런저런 문제들 #1934: 최소공배수 [JAVA] (0) | 2023.07.15 |
이런저런 문제들 #11656 접미사 배열[JAVA] (0) | 2023.07.05 |
이런저런 문제들 #11655 ROT13[JAVA] (0) | 2023.07.05 |
DP #1699: 제곱수의 합[JAVA] (0) | 2023.07.05 |