
Queue를 사용해야 하는 문제였다!queue를 처음 사용해봐서 애먹었지만 마지막 출력이 까다로운걸 빼면 그렇게 어려운 문제는 아니었다.
큐에 입력값을 전부 넣어놓은 뒤,출력할 데이터 전까지 데이터를 빼내고 다시 뒤로 넣는 작업을 반복한다(add,poll)그 뒤 데이터를 출력한다.
출력 예시를 보면 마지막 요소는 , 과 띄어쓰기가 없다.이걸 위해서 마지막 전 요소까지만 출력하고 마지막 요소는 그냥 출력해준다.
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
import java.util.LinkedList;
import java.util.Queue;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
Queue<Integer> queue = new LinkedList<>();
int a = sc.nextInt();
int b = sc.nextInt();
// queue에 숫자들 저장
for(int i=1;i<=a;i++){
queue.add(i);
}
System.out.print("<");
// 마지막 직전까지만 출력하기 위해서
while(queue.size()>1){
for(int i=0;i<b-1;i++){
int q=queue.poll();
queue.add(q);
}
System.out.print(queue.poll()+", ");
}
System.out.print(queue.poll()+">");
}
}
자바 Queue 사용법
add(E e): Queue에 주어진 요소를 추가합니다. 추가에 성공하면 true를 반환하고, 공간이 부족하여 추가에 실패하면 IllegalStateException을 발생시킵니다.
offer(E e): Queue에 주어진 요소를 추가합니다. 추가에 성공하면 true를 반환하고, 공간이 부족하여 추가에 실패하면 false를 반환합니다.
remove(): Queue에서 첫 번째 요소를 제거하고, 제거된 요소를 반환합니다. Queue가 비어있을 경우 NoSuchElementException을 발생시킵니다.
poll(): Queue에서 첫 번째 요소를 제거하고, 제거된 요소를 반환합니다. Queue가 비어있을 경우 null을 반환합니다.
element(): Queue의 첫 번째 요소를 반환합니다. Queue가 비어있을 경우 NoSuchElementException을 발생시킵니다.
peek(): Queue의 첫 번째 요소를 반환합니다. Queue가 비어있을 경우 null을 반환합니다.