코딩테스트/백준
[백준-자바] 11866번 요세푸스 문제 0 / 2022.07.16
강원대목동녀
2022. 7. 16. 17:00
https://www.acmicpc.net/problem/11866
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder(); //요세푸스 순열 출력
sb.append('<');
Queue<Integer> queue = new LinkedList<>();
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
//큐에 1부터 N까지 offer
for(int i=1; i<=N; i++){
queue.offer(i);
}
int index = 0; //K번째를 구하기 위한 변수
//큐가 빌 때까지 반복
while(!queue.isEmpty()){
index++;
if(index == K){ //index가 K번째 이면
//맨 앞 숫자를 sb에 추가해줌
sb.append(queue.poll()).append(", ");
index = 0; //index는 다시 0
} else{
//index가 K번째가 아니라면 맨 앞 숫자를 맨 뒤로 넣어줌
queue.offer(queue.poll());
}
}
//맨 뒤에 넣어준 ,와 공백을 > 로 바꿔줌
sb.replace(sb.length()-2, sb.length()-1, ">");
System.out.println(sb);
}
}