ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 11866 조세퍼스 문제 0
    백준 algorithm 2019. 12. 20. 18:21

    문제 설명

    list STL을 이용해서 실제적으로 지우면서 문제를 풀었다. 
    풀고 나서 다른 풀이들을 보니 원형큐를 이용해서 푸는 방법도 있다. 

    후자의 방법이 더 빠르게 풀수 있는 방법인듯하다. 다시한번 풀어볼 문제이다.

     

    #include <iostream>
    #include <deque>
    #include <list>
    using namespace std;
    
    int main()
    {
    	list<int> jose;
    	int N, K;
    	cin >> N >> K;
    	for (int i = 1; i <= N; i++)
    	{
    		jose.push_back(i);
    	}
    	//find first delete node
    	list<int>::iterator iter = jose.begin();
    	for (int i = 0; i < K - 1; i++)
    	{
    		iter++;
    	}
    	cout << '<';
    	while (!jose.empty())
    	{
    		if(jose.size()!=1)cout << *iter << ", ";
    		else { cout << *iter << "> \n"; }
    		//erase() returns where deleted next
    		iter = jose.erase(iter);
    		if (jose.size() == 0)break;
    		if (iter == jose.end())//end() means not the last node, It means that last node's next
    		{
    			iter=jose.begin();
    		}
    		for (int j = 0; j < K - 1; j++)
    		{
    			iter++;
    			if (iter == jose.end())
    			{
    				iter = jose.begin();
    			}
    		}
    	}
    	return 0;
    }

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

    백준 10817 - 세 수  (0) 2019.12.26
    백준 2588 곱셈  (0) 2019.12.20
    백준 2164 -카드2  (0) 2019.12.13
    백준 10172 - 개  (0) 2019.11.17
    백준 15596 - 정수 N개의 합  (0) 2019.11.10

    댓글

Designed by Who.