Coding - Algo/Java
[백준] 1158번:요세푸스 문제 (Java 자바)
jainn
2021. 8. 6. 00:02
728x90
문제
https://www.acmicpc.net/problem/1158
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
풀이 및 소스코드
원형큐처럼 생각하고 풀었다.
k 번째가 아닌건 빼고 바로 넣어주는 것을 반복했다.
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
Queue<Integer> q = new LinkedList<Integer>();
st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
for(int i=1;i<=n;i++) {
q.add(i);
}
sb.append("<");
while(true) {
for(int i=1;i<=k;i++) {
if(i%k==0) {
sb.append(q.remove());
if(!q.isEmpty()) sb.append(", ");
}else {
q.add(q.remove());
}
}
if(q.isEmpty()) break;
}
sb.append(">");
System.out.println(sb);
}
}
반응형