Problem Solving/백준

[백준-1158] 요세푸스 문제

<문제>

 


<Code>

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

int main(){
  int n,k;
  int temp;
  queue <int> q;
  cin>>n>>k;
  //일단 큐에 다 넣어줌.
  for(int i=1; i<=n; i++){
    q.push(i);
  }
  cout<<"<";

  while(1){
    for(int i=0;i<k-1; ++i){
      temp=q.front();
      q.pop();
      q.push(temp);
    }
    cout<<q.front();
    q.pop();

    if(!q.size()){
      break;
    }
    cout<<", ";
}
  cout<<">";

  return 0;
}


<Comment>

1. 일단 큐에 다 넣어줌.

2. k-1번 만큼 pop해서 맨 뒤로 push

3. 첫 번째 원소를 pop

 

*출력할 때 빈칸 안써서 한번에 못맞음 출력 결과 꼼꼼히 보자~!~!~!


www.acmicpc.net/problem/1158

 

1158번: 요세푸스 문제

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

www.acmicpc.net

 

'Problem Solving > 백준' 카테고리의 다른 글

[백준-1874] 스택 수열  (0) 2021.03.24
[백준-10773] 제로  (0) 2021.03.24
[백준-10845] 큐  (0) 2021.03.17
[백준-10828] 스택  (0) 2021.03.17
[백준-9012] 괄호  (0) 2021.02.05