https://www.acmicpc.net/problem/1158
나는 이 문제를 큐(Queue)를 이용하여 해결하였다.
poll - 첫 번째 값을 반환하고 제거한다.
remove - 첫 번째 값을 제거한다.
peek - 첫 번째 값을 반환한다.
add - 리스트의 마지막에 값을 추가한다.
offer - 리스트의 마지막에 값을 추가한다.
둘의 차이는 add는 실패했을때 예외가 발생한다는 점??
이러한 특징을 이용하여 해결하였고 로직은 간단하다.
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Num1158 {
public static int N;
public static int K;
public static Queue<Integer> queue = new LinkedList<>();
public static void main(String[] args) {
//input
Scanner scanner = new Scanner(System.in);
String[] a = scanner.nextLine().split(" ");
N = Integer.parseInt(a[0]);
K = Integer.parseInt(a[1]);
for (int i=1; i<=N; i++)
queue.add(i);
//logic, output
System.out.print("<");
while (!queue.isEmpty()) {
for (int i=1; i<=K - 1; i++) {
queue.add(queue.poll());
}
System.out.print(queue.poll());
if (!queue.isEmpty())
System.out.print(", ");
}
System.out.println(">");
}
}