BOJ 문제풀이

백준 11866번 c++ 풀이

koreasunoo 2021. 8. 6. 23:58

안녕하세요 오늘은 큐를 이용하여 간단하게 문제를 풀어보겠습니다.

이 문제에서 큐를 사용해야 하는 이유는 첫 줄에 있습니다. N명의 사람이 '원'을 이루면서 앉아있다고 했습니다. 그래서 K번째 사람을 셀 때, q.push(a.front), q.pop을 k-1번 반복한다음, q.pop을 하면 구현이 됩니다.

 

전략:

1. queue를 선언해주고, 1부터 N까지 자연수들을 q.push()함수를 통해 대입해준다.

2. while 문에 0~k-2까지 반복하는 for문을 만들어 q.push(q.front()), q.pop()을 통해 앞에 있는 숫자를 뒤로 보내주고, q.front()를 출력해준다.

 

코드:

#include <bits/stdc++.h>
using namespace std;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int N, K;
	cin>>N>>K;
	queue<int> q;
	for(int i= 1; i<=N; i++){
		q.push(i);
	}
	cout<<"<";
	while(1){
		for(int i= 0; i<K-1; i++){
			q.push(q.front());
			q.pop();
		}
		if(q.size() == 1){
			cout<<q.front()<<">";
			exit(0);
		}
		else{
			cout<<q.front()<<", ";
			q.pop();
			
		}
	}
}

 

'BOJ 문제풀이' 카테고리의 다른 글

백준 15829 c++ 풀이  (0) 2021.08.07
백준 9012번 c++ 풀이  (0) 2021.08.07
백준 9184번 c++ 풀이  (0) 2021.08.06
백준 10816번 c++ 풀이  (0) 2021.08.06
백준 10828번 c++ 풀이  (0) 2021.08.06