-
11866.요세푸스 문제 0알고리즘/백준 BAEK JOON 2020. 4. 6. 23:57
이번 문제는 백준의 11866 요세푸스 문제 0이다.
문제를 이해하는 건 금방했는데 원형으로 배열을 만들어야하나 하는 생각을 했고
굳이 그럴 필요가 없다고 생각해서 포인터로 예외처리를 하려고 하였으나
너무나 비효율적이었고 결국 queue를 사용해서 풀었다. 조금만 쉽게 생각하면 됬는데.. 허허..
< Code 설명 >
#include <iostream> #include <queue> using namespace std; int main() { int n, k; cin >> n >> k; // 길이와 K번째 순서 입력 queue<int>q; // queue for(int i=1; i<=n; i++)// queue에 다넣는다. q.push(i); int temp; // q의 제일 첫번째가 저장될 값 cout << "<"; while(!q.empty()){ // queue가 빌 때까지 for(int i=1; i<k; i++){ // k-1번째 만큼 움직일 것이다. temp = q.front(); // 제일 앞의 값을 저장하고 q.pop(); // 뺀다음 q.push(temp); // 뒤로 보내준다. } // 이렇게 k-1 만큼 반복하면 제일 앞에 k번째 숫자가 된다. cout << q.front(); // 그 값을 출력하고 q.pop(); // 뺀다. -> 이를 반복하면 된다. if(!q.empty()) // queue가 다 비지 않았으면 ','를 찍어준다. cout << "," << " "; } cout << ">" << "\n"; return 0; }
생각보다 쉬운 문제였다!
반응형'알고리즘 > 백준 BAEK JOON' 카테고리의 다른 글
1021.회전하는 큐 (0) 2020.04.09 1966.프린터 큐 (0) 2020.04.07 4949.균형잡힌 세상 (0) 2020.04.06 1874.스택 수열 (0) 2020.04.02 11403.경로찾기 (0) 2020.03.16 댓글