https://www.acmicpc.net/problem/11866
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
요세푸스문제는 코테에서 자주 등장하는 문제이며, Queue를 이용하면 쉽게 풀어낼 수 있다.
출력의 경우 아래와 같이 바로바로 찍어낼 수도 있고, Stringbuilder를 사용해도 괜찮을 것 같다.
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 m = Integer.parseInt(st.nextToken());
Queue<Integer> q = new LinkedList<>();
for (int i = 0; i < n; i++) {
q.add(i+1);
}
System.out.print("<");
int i =1;
while (q.size()>1){
int re = q.poll();
if(i%m==0){
System.out.print(re+", ");
}else {
q.add(re);
}
i++;
}
System.out.print(q.poll()+">");
}
}
'CodingTest' 카테고리의 다른 글
백준_1018번_체스판 다시 칠하기_자바 (2) | 2024.01.04 |
---|---|
코딩테스트 기본 유형 정리 (1) | 2024.01.01 |
백준_25206번_너의평점은_자바 (0) | 2023.12.15 |
백준_2468번_안전영역_자바 (0) | 2023.12.13 |
백준_2667번_단지번호붙이기(자바) (0) | 2023.12.10 |