-
[BOJ] 11866 1158 : 조세퍼스 문제STUDYING/Algorithm 2018. 10. 10. 22:26728x90
문제
규칙
m-1번을 건너 뛴 이후에 m번째 사람이 뽑힌다.
즉, m-1번 ( 건너뛰는 사람 )을 top 뒤로 보냄. 그 다음으로 m번째 사람을 뽑고 그 값을 기록한다.
코드
#include <stdio.h>
int queue[1000000];
int output[1000000];
int front =-1;
int top =-1;
void push(int n) {
queue[++top] = n;
}
int pop() {
if (front == top) {
return -1;
}
else {
return queue[++front];
}
}
int main() {
int n, m, i;
int cnt=0;
scanf("%d %d", &n, &m);
for (i = 1; i <= n; i++) {
push(i);
}
while (front != top) {
for (i = 0; i < m - 1; i++) {
push(pop());
}
output[cnt] = pop();
cnt++;
}
printf("<");
for (i = 0; i < n - 1; i++) {
printf("%d, ", output[i]);
}
printf("%d>\n", output[i]);
}
'STUDYING > Algorithm' 카테고리의 다른 글
[BOJ] 1874 : 스택 수열 (0) 2018.10.18 백준 문제 (0) 2018.10.15 [BOJ] 1966 : 프린터 큐 (0) 2018.10.11 [BOJ] 10845 : 큐 (0) 2018.10.04 [BOJ] 10828 : 스택 (0) 2018.10.04