https://www.acmicpc.net/problem/1158
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
n개 수열에서 k번째 선택된 수만 뽑아내는 것이니까 k번째 수가 아닌 수들은 모두 뒤로 push한 뒤 pop을 시켜주고, k번째 수는 바로 pop과함께 출력시켜준다.
코드
// 1158
#include <iostream>
#include <queue>
using namespace std;
int main(int argc, const char *argv[])
{
int n, k;
queue<int> q;
cin >> n >> k;
for (int i = 1; i <= n; i++)
{
q.push(i);
}
cout << "<";
while (!q.empty())
{
for (int i = 1; i < k; i++)
{
q.push(q.front());
q.pop();
}
cout << q.front();
if (q.size() != 1)
cout << ", ";
q.pop();
}
cout << ">";
return 0;
}
'코딩테스트 연습 > Baekjoon' 카테고리의 다른 글
[Baekjoon] 11655번 : ROT13 (c++) (0) | 2022.03.31 |
---|---|
[Baekjoon] 11653번 : 소인수 분해 (c++) (0) | 2022.03.31 |
[Baekjoon] 11576번 : Base Conversion (c++) (0) | 2022.03.31 |
[Baekjoon] 11005번 : 진법 변환 2 (c++) (0) | 2022.03.31 |
[Baekjoon] 10872번 : 팩토리얼 (c++) (0) | 2022.03.31 |