백준 - 요세푸스 문제 (실버 4)
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
'코딩테스트 정리(자바)' 카테고리의 다른 글
| 백준 - 2493번 탑 (골드 5) (0) | 2024.03.07 |
|---|---|
| 백준 - 스택 수열 (실버 2) (0) | 2024.03.06 |
| 백준 - 키로거 (실버 2) (1) | 2024.03.05 |
| List<String> list를 String으로 변환 (0) | 2024.03.04 |
| 백준 - 에디터 (실버 2) (0) | 2024.03.04 |