Machineboy空
11866: 요세푸스 문제 0 - queue 본문
https://www.acmicpc.net/problem/11866
문제요약
원소 개수 n, 제거해야하는 사람 k 요세푸스 순열을 출력하라!
난이도
Silver 5
풀이 포인트
- 그리디
- 가장 첫번째 회의는 진행한다고 가정하고 그 다음에 열 수 있는 회의부터 고려
REVIEW
진짜 바보처럼 k를 3일 때만 가정하여 풀이를 구현했다가 틀렸다.
queue를 활용하여 연속하는 순열만들기!
쉽게 풀리니 문제 풀이가 재밌다 ㅎ
CODE
#include <bits/stdc++.h>
using namespace std;
int n, k;
queue<int> q;
vector<int> v;
int main(){
cin >> n >> k;
for(int i = 1; i <= n; i++){
q.push(i);
}
while(!q.empty()){
for(int i = 0; i < k-1; i++){
int first = q.front();
q.pop();
q.push(first);
}
int toRemove = q.front();
q.pop();
v.push_back(toRemove);
}
cout << "<";
for(int i = 0; i < v.size(); i++){
if (i != 0) cout << ", ";
cout << v[i];
}
cout << ">";
}
'Computer > Coding Test' 카테고리의 다른 글
프로그래머스 PCCP 역량인증 시험 후기와 반성 (0) | 2024.06.16 |
---|---|
14469: 소가 길을 건너간 이유 3 - 그리디 (1) | 2024.06.09 |
1931: 회의실 배정 - 그리디 (0) | 2024.06.07 |
1987 : 알파벳 - DFS, BFS (0) | 2024.04.02 |
14497 : 주난의 난 - bfs, dfs (0) | 2024.04.01 |