알고리즘 문제 풀이

백준1158 요세푸스 문제: 자바(수정중)

superbono 2021. 2. 8. 23:15

내가 알기로 백준에 요세푸스 문제가 시리즈로 몇개 더 있는데 일단 제일 먼저 떠오르는건 큐를 돌리는거다. 근데 그만큼 계속 뒤에 원소를 넣어주는 연산을 돌려야 하니까 다른 방법도 찾아보는게 좋다. 큐, 링크드리스트, 또 다른 방법(쌤이 알려주신거) 등이 있다. 

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

// 요세푸스 문제
public class bj1158 {
	static int arr[];
	static int N, K, cnt, idx;
	static StringBuilder sb;
	static Queue <Integer> al;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		sb = new StringBuilder();
		
		N = sc.nextInt();
		K = sc.nextInt();
		al = new LinkedList<>();
		cnt = 0; 
		
		for (int i = 1; i <= N; i++) {
			al.offer(i);
		}
		
		sb.append('<');
		while(al.size() != 0) {
			cnt++;
			if(cnt % K == 0) sb.append(al.poll()+ ", ");
			else {
				al.offer(al.poll());
			}
		}
		
		sb.setLength(sb.length() - 2);
		sb.append('>');
		System.out.println(sb);
	}
}

 

'알고리즘 문제 풀이' 카테고리의 다른 글

SWEA 9229 한빈이의 spot mart (Java 자바)  (0) 2021.02.08
백준14501 퇴사 (Java 자바)  (0) 2021.02.08
백준 1065 한수 (Java 자바)  (0) 2021.02.08
SWEA 퍼펙트 셔플  (0) 2021.02.05
SWEA 1225 암호 생성기  (0) 2021.02.04