1158
import java.io.BufferedReader;
import java.io.IOException;
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 IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
Queue<Integer> input = new LinkedList<>();
StringBuilder sb = new StringBuilder();
sb.append("<");
for(int i=1; i<=N;i++) {
input.add(i);
}
int size = input.size();
while(size -->0) {
for(int j=0; j<M-1;j++) {
int change = input.poll();
input.add(change);
}
sb.append(input.poll()).append(","+" ");
}
sb.deleteCharAt(sb.lastIndexOf(" "));
sb.deleteCharAt(sb.lastIndexOf(","));
sb.append(">");
System.out.println(sb.toString());
}
}
여기 나와있는 예제인 7 3 을 입력값으로 넣으면
출력값이 <3, 6, 2, 7, 5, 1, 4> 이다
그런데 맨 마지막 4를 출력할 때는 ,(공백) 이 나오면 안되기 때문에
마지막 부분에 이를 제거하기 위해
sb.deleteCharAt(sb.lastIndexOf(" "));
sb.deleteCharAt(sb.lastIndexOf(","));
코드를 사용하였다.
StringBuilder에서 마지막 부분 제거
큐 메소드
Queue<Integer> queue = new LinkedList<>();
queue.add(1); // 1을 큐에 추가
queue.offer(2); // 2를 큐에 추가
queue.poll(); // 큐의 첫번째 데이터 꺼냄(큐가 비어 있으면 null 리턴)
queue.remove(); // 큐에서 첫번째 데이터 꺼냄 (큐가 비어 있으면 NoSuchElementException 발생)
1) queue.peek(); // 큐의 첫번째 데이터를 참조만하고 지우지 않음
2)queue.element(); // 큐의 첫번째 데이터를 참조만하고 지우지 않음
queue.clear();// 큐 초기화

아이디어 참고 :
큐에서 앞에서 자료를 꺼내서 다시 뒤로 넣는 아이디어 참고
https://st-lab.tistory.com/197?category=899902
[백준] 11866번 : 요세푸스 문제 0 - JAVA [자바]
www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 문제 알고리즘 [접근 방법] 큐를 이용한 매우 쉬..
st-lab.tistory.com
참고자료 : 큐 메소드 정리
[Java] Queue 클래스 사용법 & 예제
Queue(큐) 사전적으로 Queue(큐)는 (무엇을 기다리는 사람자동차 등의)줄 이란 뜻이다. 자료구조에서 Queue(큐)는 처리를 기다리는 데이터들이 기다리는 줄이라고 보면 된다. 스택(Stack)과 더불어 가장
hbase.tistory.com