Algorithm/etc
조세퍼스
DingCoDing
2022. 1. 9. 13:38
반응형
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool check[1001];
int findNext(int cur, int k, int n){
int cnt = 0;
while(cnt<k){
if (check[cur]){
}
else{
cnt++;
}
if(cnt==k) break;
cur++;
if(cur>n) cur=1;
}
return cur;
}
int main() {
//freopen("input.txt.txt","rt",stdin);
int n, k,size,i,j,idx,cnt=0,cur;
scanf("%d %d",&n, &k);
size = n;
cur = 1;
while(cnt!=n-1){
cur = findNext(cur, k, n);
check[cur] = true;
//printf("%d : " ,cur);
cnt++;
//for(i=1; i<=n; i++){
// if(!check[i]){
// printf("x");
// }
// else printf("o");
// }
// printf("\n");
}
for(i=1; i<=n; i++){
if(!check[i]){
printf("%d", i);
}
}
// check idx 1~n번까지 사용
// 1 2 3 4 5 6 7 8
// . . o . . . . .
// . . o . . o . .
// . . o . . o . .
// o . o . . o . .
// o . o . o o . .
// o . o . o o . .
// o o o . o o . .
// o o o . o o . o
// o o o o o o . o
}
-------------
강의 코드
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
//freopen("input.txt.txt","rt",stdin);
int n,i, k, pos=0, bp=0, cnt=0;
scanf("%d %d", &n, &k);
vector<int> prince(n+1);
while(1){
pos++;
if(pos>n) pos = 1;
if(prince[pos]==0){
cnt++;
if(cnt==k){
prince[pos]=1;
cnt=0;
bp++;
}
}
if(bp==n-1) break;
}
for(i=1; i<=n; i++){
if(prince[i]==0){
printf("%d\n",i);
break;
}
}
}
반응형