반응형
#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;
			
		}
	}

}
반응형

+ Recent posts