SMALL
안녕하세요 오늘은 큐를 이용하여 간단하게 문제를 풀어보겠습니다.
이 문제에서 큐를 사용해야 하는 이유는 첫 줄에 있습니다. 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();
}
}
}
LIST
'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 |