728x90
문제풀이
처음에는 연결리스트 사용해서 circular queue를 사용해야겠다고 생각했다.
하지만 복잡하기 때문에 그냥 단순하게 필요한 순번의 번호가 나올때까지 뽑아서 다시 Queue 뒤에 저장하는 방식으로 야매 circular queue를 구현했다.
- Queue에 N만큼의 정수를 저장해준다.
- K-1번째까지의 원소를 pop해서 Queue 뒤에 push해준다.
- K번째의 원소를 pop해준다.
- Queue에 원소가 1개 남을때까지 반복해준다. (출력 형식때문에)
- 마지막원소를 출력해주고 마무리한다.
코드
#include <iostream>
#include <queue>
using namespace std;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, k; cin >> N >> k;
queue<int> arr, result;
for(int i=1; i<=N; i++) arr.push(i);
cout << "<";
while(arr.size() > 1) {
for (int i=0; i<k; i++)
{
int temp = arr.front();
arr.pop();
if(i==k-1) cout << temp << ", ";
else arr.push(temp);
}
}
cout << arr.front() << ">\n";
return 0;
}
728x90
'Algorithm > 백준과 프로그래머스' 카테고리의 다른 글
[C++] 1935. 후위 표기식2 (1) | 2023.07.16 |
---|---|
[C++] 2164. 카드2 (0) | 2023.07.16 |
[C++] 9012. 괄호 (0) | 2023.07.14 |
[C++] 10828. 스택 (0) | 2023.07.11 |
[C++] 2751. 수 정렬하기 2 (0) | 2023.07.06 |