[ 목차 ]
📢 문제 출처
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
📢 문제 설명
📢 입출력 예시
📢 그림 설명
📢 풀이
- 1~N까지 Queue에 add한다.
- K - 1 번째까지는 첫 번째 값을 맨 뒤로 보낸다.
- K번째 일때는 poll해서 출력한다.
- Queue의 사이즈가 1개일 때까지 반복한다. (Queue의 요소가 1개면 어차피 그것만 빼서 출력하면 되기 때문이다)
📢 코드
import java.io.*;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
//리스트에 값 넣기
LinkedList<Integer> list = new LinkedList<Integer>();
for (int i = 1; i < N + 1; i++) {
list.add(i);
}
bw.write('<'); //쓰기
while(list.size() > 1){
for (int i = 0; i < K - 1; i++) {
int num = list.poll(); //처음 값을 꺼낸다.
list.add(num); //꺼낸 값을 뒤로 더해준다.
}
//뽑은 값 쓰기
bw.write(list.poll() + ", ");
}
//마지막에 '>'로 닫아주고 쓰기
bw.write(list.poll() + ">");
bw.flush();
bw.close();
}
}
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[Java][백준 25314번] : 코딩은 체육과목 입니다. (0) | 2023.08.12 |
---|---|
[Java][백준 27866번] : 문자와 문자열 (0) | 2023.08.11 |
[Java][백준 2743번] : 단어 길이 재기 (0) | 2023.08.10 |
댓글