서두르지 말고 쉬지 말자

백준 11866번 요세푸스 문제 0 (C++) 본문

코딩 공부/Baekjoon Problem Solving

백준 11866번 요세푸스 문제 0 (C++)

philos 2025. 7. 7. 15:45

문재 티어: 실버 4

문제 유형: 구현, 자료구조, 큐

문제 해결 소감: 그냥 배열써서 풀어도 풀긴했을 거 같은데 큐를 쓰니까 풀이가 더 간단해졌다. 이래서 자료구조를 사용하나 보다. 

문제 해결 전략: k번째보다 앞에 있는 값들은 push()한후 pop()으로 없애준다. 그 후 정답으로 제출할 vector에 넣고 큐 안에서 pop한다. 이를 반복한다.

 

#include <iostream>
#include <queue>
#include <vector>
int n, k;
std::queue<int> q;
std::vector<int> ans;
int main(void) {
  std::cin >> n >> k;
  for (int i = 1; i <= n; i++) {
    q.push(i);
  }
  for (int i = 0; i < n; i++) {
    for (int l = 0; l < k - 1; l++) {
      q.push(q.front());
      q.pop();
    }
    ans.push_back(q.front());
    q.pop();
  }
  std::cout << '<';
  for (int i = 0; i < ans.size() - 1; i++) {
    std::cout << ans[i] << ", ";
  }
  std::cout << ans[ans.size() - 1];
  std::cout << '>';
}
반응형