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

Algorithm|2021. 12. 3. 17:15
반응형

Try 1 

배열로 풀었는데 뭔가 이상함 n = 4 / k =4 인 부분에서 오류 발생 

큐로 다시 풀어보고 배열도 틀린 점 고칠 예정

#include <vector>
#include <iostream>

using namespace std;

int main(void) 
{
  int n;
  int k;
  int count = 0;
  

  cin >> n >> k;


  vector<int> list(n);
  
  int idx = k-1;
  list[idx] = 1;

  cout << '<' << k << ", ";
  
  for(int i=0; i<n-1; i++)
  {
    while(count != k)
    {
      idx++;
      
      if(list[idx] == 0)
        count ++;

      if(idx == n)
        idx = 0;

      
    }
    
    count = 0;
    
    list[idx] = 1;

    if(i<n-2)
      cout << idx+1 << ", ";
    else 
      cout << idx+1 << ">";

  }

  return 0;
}

Try 2

탐색 idx를 다시 초기화 해주는 부분의 순서를 이상하게 했었음...

해결완료 

/* 수정한 부분 */
  
  for(int i=0; i<n-1; i++)
  {
    
    while(count != k)
    {
      idx++;

      if(idx == n)
        idx = 0;      
      
      if(list[idx] == 0)
        count ++;

    }
반응형

댓글()