상세 컨텐츠

본문 제목

< 백준 BaekJoon : 11866번 요세푸스 문제 0> C++

C++/Baekjoon

by J2on 2024. 1. 23. 17:46

본문

<< 문제 >> 

https://www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

 

잘 생각해보면

 

k-1개 만큼 pop

-> 다시 Queue에 push

-> front를 출력

 

이 과정을 1개가 남을때까지 반복하면 되는 문제

 

 

 

<< 코드 >> 

#include <iostream>
#include <queue>
using namespace std;


void josephus(int n, int k){
  queue<int> q;

  for(int i = 1; i <= n; i++){
    q.push(i);
  }
  
  while(q.size() != 1){
    for(int i =1; i<k; i++){
      q.push(q.front());
      q.pop();
    }
    cout << q.front() << ',' << ' ';
    q.pop();
  }
  cout << q.front();
}


int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  
  int n, k;
  cin >> n >> k;

  cout << '<';
  josephus(n, k);
  cout << '>';
}

 

 

관련글 더보기

댓글 영역