백준 문제풀이

1158. 요세푸스 문제 (자바, Java)

뮤츠 2022. 11. 5. 21:55

이거 꽤 어려웠다...그래서 그냥 정답봤다.

큐에 값들이 아닌 순번을 저장하고, 값들은 배열로 저장한다. 제거할때마다 큐를 빼주면서 배열값을 불러와 출력한다.

한명만 남으면, 마지막 값으로 받은 뒤 문닫고 출력한다.

 

import java.io.BufferedReader;
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 Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine()," ");
		int n = Integer.parseInt(st.nextToken());
		int k = Integer.parseInt(st.nextToken());
		StringBuilder sb = new StringBuilder();
		Queue <Integer> queue = new LinkedList<>();
		
		for (int i=1; i<=n; i++) {
			queue.add(i);
		}
		
		int count = 1;		
		sb.append("<");
		
		while (!queue.isEmpty()) {
			if (count%k!=0) {
				int temp = queue.peek();
				queue.remove();
				queue.add(temp);
			} else if (queue.size()==1) {
				sb.append(queue.peek()+">");
				queue.remove();
				break;
			} else {
				sb.append(queue.peek()+", ");
				queue.remove();
			}
			count++;
		}
		System.out.println(sb);
	}

}

'백준 문제풀이' 카테고리의 다른 글

17413. 단어 뒤집기 2 (자바, Java)  (0) 2022.11.20
10866. 덱 (자바, Java)  (0) 2022.11.05
10845. 큐 (자바, Java)  (0) 2022.11.05
1406. 에디터 (자바, Java)  (0) 2022.11.05
1874. 스택 수열 (자바, Java)  (0) 2022.11.05