티스토리 뷰

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()함수를 이용해서 삭제시킵니다.

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 1182번 C++  (0) 2023.07.22
[C/C++] 백준 1181번 - 단어 정렬  (0) 2023.07.22
백준 1157번 C++  (0) 2023.07.21
백준 1152번 C++  (0) 2023.07.21
백준 1124번 C++  (0) 2023.07.21
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함