Algorithm/BOJ
백준 1158번 C++
poopooreum
2023. 7. 22. 14:00
반응형
백준 1158번 요세푸스 문제
https://www.acmicpc.net/problem/1158
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net


#include<iostream>
#include<queue>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
queue<int>q;
for (int x = 1; x <= n; x++)
q.push(x);
cout << "<";
while (q.size() - 1) {
for (int x = 0; x < k - 1; x++) {
q.push(q.front());
q.pop();
}
cout << q.front() << ", ";
q.pop();
}
cout << q.front() << ">";
}
정답 코드
문제 풀이
큐를 이용해서 푸는 문제입니다. 원형 큐로 생각해서 접근하면 쉽습니다. k-1번째까지 반복문을 돌려서 큐의 앞쪽에 있던 원소를 뒤로 넣어줍니다. 그 후 k번째 원소를 출력한 후 pop()함수를 이용해서 삭제시킵니다.
반응형