728x90
https://www.acmicpc.net/problem/11866
문제 풀이
요세푸스 문제에서는 k번째에 사람을 제거한다.
구현한 큐에서 k-1번 동안 front를 맨 뒤로 옮기고, k번째에 front 값을 출력한다.
큐가 비어있지 않다면 ', '를 출력해서 요구하는 출력 형식에 맞춘다!
느낀 점
그렇게 어려운 문제는 아니었지만 코드를 깔끔하게 구현하기 힘들었다. 깔끔하게 구현하기 위해서 시간을 조금 소모한 것 같다.
코드
#include <iostream>
#include <queue>
using namespace std;
int n, k;
queue<int> q;
void func(int n, int k) {
for (int i = 1; i <= n;i++) {
q.push(i);
}
cout << "<";
while (!q.empty()) {
for (int i = 0; i < k-1;i++) {
q.push(q.front());
q.pop();
}
cout << q.front();
q.pop();
if (!q.empty()) {
cout << ", ";
}
}
cout << ">" << "\n";
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> k;
func(n, k);
}
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[C++] 백준 10866번 : 덱 (0) | 2021.07.24 |
---|---|
[C++] 백준 1966번 : 프린터 큐 (0) | 2021.07.24 |
[C++] 백준 2164번 : 카드2 (0) | 2021.07.24 |
[C++] 백준 18258번 : 큐 2 (0) | 2021.07.23 |
[C++] 백준 17298번 : 오큰수 (0) | 2021.07.23 |
댓글