코딩테스트 정리(자바)
백준 - 요세푸스 문제 (실버 4)
재히hj
2024. 3. 6. 13:29
728x90
import java.io.*;
import java.util.*;
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));
String[] input=br.readLine().split(" ");
int N=Integer.parseInt(input[0]);
int K=Integer.parseInt(input[1]);
List <Integer> list=new ArrayList<>();
for(int i=1;i<=N;i++){
list.add(i);
}
StringBuilder sb = new StringBuilder();
sb.append("<");
int index = 0; // 시작 위치
while(list.size() > 1){
index = (index + K - 1) % list.size(); // K번째 사람 찾기
sb.append(list.remove(index)).append(", "); // K번째 사람 제거
}
sb.append(list.get(0)).append(">"); // 마지막 남은 사람 추가
bw.write(sb.toString());
bw.flush();
bw.close();
}
}
1. remove 함수도 원소를 반환함.
2. 리스트의 원소를 하나씩 제거하면 리스트의 크기도 그만큼 줄어듦
-> 따라서 N으로 나누면 안 되고 list.size()로 나눠줘야 함.
여기서 헤맴.
728x90