반응형
#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;
}
}
}
반응형
'Algorithm > etc' 카테고리의 다른 글
투포인터 활용, ugly numbers (0) | 2022.01.12 |
---|---|
배열, 벡터에서 0 이상 찾기 (0) | 2022.01.10 |
이분 탐색으로 최소, 최대 적절한 답 찾아내기 (0) | 2022.01.08 |
연속된 자연수의 합 (0) | 2022.01.07 |
LRU( Least Recently Used) cpp 구현 (0) | 2022.01.06 |