https://www.acmicpc.net/problem/1158
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int k=sc.nextInt();
Queue<Integer> Q = new LinkedList<>();
StringBuilder sb = new StringBuilder();
for(int i=1; i<=n; i++) Q.offer(i);
sb.append('<');
while(Q.size()!=1){
for(int i=1; i<k; i++) Q.offer(Q.poll());
sb.append(Q.poll()).append(", ");
}
sb.append(Q.poll()).append('>');
System.out.println(sb);
}
}
1부터 n까지의 숫자를 큐에 넣은 후,
큐의 첫번째 원소부터 k-1번째 숫자를 큐에서 빼고 맨 뒤에 추가한다.
k번째인 원소는 아예 큐에서 제거해버린다.
이렇게 큐에 남아있는 원소가 1이 아닐때까지 반복하고, 큐에 남아있는 마지막 원소는 그냥 poll하기만 하면 된다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 1874번- 스택 수열 (0) | 2022.07.16 |
---|---|
[JAVA] 백준 10799번- 쇠막대기 (0) | 2022.07.15 |
[JAVA] 알고리즘 : Queue- 응급실 (0) | 2022.07.15 |
[JAVA] 알고리즘 : Queue- 교육과정설계 (0) | 2022.07.14 |
[JAVA] 알고리즘 : Queue- 공주 구하기 (0) | 2022.07.14 |