ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 11866 요세푸스 문제 0 C++
    백준 algorithm 2022. 7. 17. 23:43
    반응형

     

     

    예제 입력 1 복사

    7 3
    

    예제 출력 1 복사

    <3, 6, 2, 7, 5, 1, 4>
    

     

     

    => 자료구조 queue 를 안다면 구현할 수 있는 문제입니다. 

    => 삭제하고픈 원소를 찾을때까지 이전에 있는 원소들을 큐의 뒤쪽에 삽입합니다. 

    => 삭제하고픈 원소를 찾을 경우, 해당원소를 PRINT하고 POP을 해줍니다. 

    => 요세푸스 QUEUE에 원소가 없을때까지 위의 작업을 반복합니다

    => 프린트문 시작 '<'과 프린트문 종료'>' 를 적절한 곳에 넣어줍니다. 

    => 문제풀이는 아래의 그림과 같습니다. 
     
     
    문제풀이

     

    #include <string>
    #include <algorithm>
    #include <set>
    #include <map>
    #include <unordered_map>
    #include <unordered_set>
    #include <iostream>
    #include <queue>
    #include <utility>
    #include <stdio.h>
    
    using namespace std;
    
    
    
    int main()
    {
        ios_base::sync_with_stdio(false);
        cin.tie(nullptr);
        cout.tie(nullptr);
        
        int N,K;
        cin >> N >> K;
        
        queue<int> jose; //요세푸스 큐
        
        //큐에 원소 삽입
        for(int i=1; i<= N; i++)
        {
            jose.push(i);
        }
        
        //프린트문 시작
        cout << "<";
        
        while(1)
        {
            //k번째 원소가 jose큐 가장 앞에 오도록함
            //나갈원소 앞에 있던 원소들은 jose큐 뒤에 삽입
            for(int i=0; i<K-1; i++)
            {
                int tmp = jose.front();
                jose.push(tmp);
                jose.pop();
            }
            
            cout << jose.front();
            jose.pop();
            //jose 큐가 꽉 찼을 경우, while문 탈출
            if(jose.empty())
            {
                break;
            }
            //jose 큐가 비어있지 않을경우, ','을 찍어줌
            else
            {
                cout <<", ";
            }
        }
        //프린트문 종료
        cout<<">";
    }
     

     

    2년전에 풀던 풀이방법과 다르게 풀이해보았습니다. 

    (2년전 풀이법 : LIST를 사용하여 실제 원소를 삭제하여 구현)

    반응형

    '백준 algorithm' 카테고리의 다른 글

    백준 1302 베스트셀러 C++  (0) 2022.07.18
    백준 10926 ??!  (0) 2022.07.18
    백준 2747 피보나치수 C++  (0) 2022.04.26
    백준 나이트의 이동 C++  (0) 2022.04.13
    백준 2525 오븐시계 C++  (0) 2022.04.12

    댓글

Designed by Who.