반응형
이 문제는 생각보다 어렵지 않다.
나는 vector를 이용해 1부터 N까지 push_back 하고, count라는 변수를 이용했다.
count가 K가 되면 그 때 iterator가 가리키고 있던 요소를 출력하고 해당 요소를 erase한다.
그리고 count는 1이 된다. count가 다시 K가 될 때 까지 iterator는 다음 요소를 가리키고, 마지막 요소인 경우 처음을 가리킨다.
#include <cstdio>
#include <vector>
using namespace std;
int main() {
int N, K;
scanf("%d %d", &N, &K);
vector<int> P;
for (int i = 0; i < N; i++) {
P.push_back(i + 1);
}
int count = 1;
printf("<");
auto iter = P.begin();
while (P.size()) {
if (count == K) {
printf("%d", *iter);
iter = P.erase(iter);
if (iter == P.end())
iter = P.begin();
if (P.size())
printf(", ");
else
break;
count = 1;
}
else {
if (++iter == P.end())
iter = P.begin();
count++;
}
}
printf(">\n");
return 0;
}
반응형
'프로그래밍 > PS' 카테고리의 다른 글
[C++] 백준 4949번: 균형잡힌 세상 (0) | 2020.09.24 |
---|---|
[C++] 백준 2108번: 통계학 (2) | 2020.09.23 |
[C++] 백준 1966번: 프린터 큐 (0) | 2020.09.23 |
[C++] 백준 11650번: 좌표 정렬하기 (0) | 2020.09.22 |
[C++] 백준 2775번: 부녀회장이 될테야 (0) | 2020.09.22 |