celina의 이것저것
[C++] 백준 11866번 - 요세푸스 문제 0 본문
반응형
접근
큐를 이용해서 풀면된다
코드
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <limits.h>
#include <algorithm>
#include <string>
#include <vector>
#include <math.h>
#include <cmath>
#include <cstring>
#include <queue>
#include <functional>
using namespace std;
queue<int> q;
int main() {
int n, k;
cin >> n >> k;
//큐에 n까지 숫자 삽입
for (int i = 1; i <= n; i++) {
q.push(i);
}
cout << "<";
while (q.size()!=0) {
for (int i = 1; i < k; i++) {
int num = q.front();
q.push(num);
q.pop();
}
int num = q.front();
cout << num;
if (q.size() != 1) {
cout << ", ";
}
q.pop();
}
cout << ">";
return 0;
}
리뷰
1. 1부터 n까지 숫자를 큐에 넣는다
2. 큐에 있는 모든 원소가 사라질때가지 while문을 돌리면서
3. for문으로 front에 있는 원소를 빼서 (k번째 전까지) 다시 맨 뒤로 넣어준다
이렇게 해야 k번째 있는 수를 제거할 수 있음
4. k번째 수를 출력하고
5. 그 k번째 수는 pop해준다
출처
https://www.acmicpc.net/problem/11866
'자료구조&알고리즘 > 백준' 카테고리의 다른 글
[C++] 백준 10799번 - 쇠막대기 (0) | 2023.08.28 |
---|---|
[C++] 백준 2161번 - 카드1 (0) | 2023.08.03 |
[C++] 백준 1652번 - 누울 자리를 찾아라 (0) | 2023.08.03 |
[C++] 백준 16395번 - 파스칼의 삼각형 (0) | 2023.07.29 |
[C++] 백준 11383번 - 뚊 (0) | 2023.07.17 |
Comments