문제접근
•
벡터를 -1 로 초기화하고 벡터를 하나씩 순회하면서 k번째가 되었을때 출력하고 그 원소는 0, 다만 벡터 원소의 값이 0인 경우에는 k번째로 카운팅을 하지 않고 다음 진행
•
idx는 k번째를 출력하기 위한 변수
•
i는 포인터 역할
놓쳤던 부분
•
queue로 k번째 일때까지 계속 pop,push를 하다가 k번째에서는 front로 출력하면됨
코드
2160 KB
1924 ms
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
int n,k;
vector<int> p;
int cnt = 0;
int idx;
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> k;
p.resize(n, -1);
cout << "<";
idx = 1;
for (int i = 0; cnt < n; i = (i + 1) % n, idx++)
{
if (p[i] == 0)
{
idx--;
continue ;
}
if (idx == k)
{
idx = 0;
p[i] = 0;
cnt++;
cout << i + 1;
if (cnt == n)
cout << ">";
else
cout << ", ";
}
}
return (0);
}
C++
복사