1에서 N 까지 값을 큐에 추가합니다.
큐에서 값을 빼오는 횟수인 카운트를 K 로 초기화합니다. 카운트의 값만큼 큐에서 값을 빼오며 카운트를 감소시킵니다.
카운트가 0이 아니라면 빼온 값을 다시 큐에 추가하고 ,
카운트가 0이라면 K 번쨰 뺀 값을 큐에 추가하지 않고 StringBuffer 에 담습니다.
그리고 카운트를 K 로 다시 초기화합니다. 위 과정을 큐에 값이 없을 때까지 반복합니다.
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 p11866 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuffer sb = new StringBuffer("<");
Queue<Integer> q = new LinkedList<>();
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
for(int i=1; i<=N; i++) {
q.add(i);
}
int count = K;
int num;
while (!q.isEmpty()) {
num = q.poll();
count--;
//K번째 사람을 제거했다면
//큐에 다시 집어넣지 않고 버퍼에 추가
//다시 count 를 K 로 초기화
if(count == 0) {
sb.append(num + ", ");
count = K;
} else {
q.offer(num);
}
}
//마지막에 붙인 쉼표와 공백 제거
sb.delete(sb.length()-2, sb.length());
sb.append(">");
System.out.println(sb);
}
}
'Baekjoon' 카테고리의 다른 글
[백준] 4153번 - 직각삼각형 - Java (0) | 2022.12.11 |
---|---|
[백준] 10569번 - 다면체 - Java (0) | 2022.12.11 |
[백준] 5800번 - 성적 통계 - Java (0) | 2022.12.11 |
[백준] 11931번 - 수 정렬하기 4 - Java (0) | 2022.12.11 |
[준] 5576번 -콘테스트 - Java (0) | 2022.12.11 |
댓글