본문 바로가기

알고리즘/구현

자바 | 백준 | 11866 | 요세푸스 문제 0 | LinkedList

Solution

삭제가 계속 이루어짐 --> LinkedList 이용

// 11866, 요세푸스 문제 0
package BOJ;

import java.io.*;
import java.util.*;

public class BOJ_11866 {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		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<>();	// 연결 리스트
		for (int i=0;i<N;i++) {
			list.add(i+1);
		}
		
		bw.write("<");
		int idx = 0;
		while (list.size()>1) {
			idx += (K-1);	// -1: remove
			idx %= list.size();	// idx >= list.size() --> index error
			bw.write(list.remove(idx)+", ");
		}
		bw.write(list.get(0)+">");
		bw.flush();
	}
	
	
}

 

문제 출처 www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net