https://www.acmicpc.net/problem/1158
vector를 사용하면 쉽게 문제를 풀 수 있다. v.erase하면 그 지워진 곳이 메꿔지기 때문이다. (실제 구현상 그런지는 모르겠다..)
#include <vector>
#include <cstdio>
using namespace std;
int main()
{
int n, m;
vector<int> v;
scanf("%d %d", &n, &m);
if (n == 1)
{
printf("<1>");
return 0;
}
for (int i = 1; i <= n; ++i)
v.push_back(i);
putchar('<');
int idx = 0, size = 0;
while (size != 2)
{
size = v.size();
const int v_idx = (idx + m - 1) % size;
printf("%d, ", v[v_idx]);
v.erase(v.begin() + v_idx);
idx = v_idx;
}
printf("%d>", v[0]);
return 0;
}
'온라인저지' 카테고리의 다른 글
[BOJ] 9012번: 괄호 (0) | 2018.07.26 |
---|---|
[BOJ] 10845번: 큐 (0) | 2018.07.26 |
[BOJ] 10828번: 스택 (0) | 2018.07.26 |
[BOJ] 1157번: 단어 공부 (0) | 2018.07.26 |
[BOJ] 15904번: UCPC는 무엇의 약자일까? (0) | 2018.07.26 |
[BOJ] 11651번: 좌표 정렬하기 2 (0) | 2018.07.26 |
댓글