본문 바로가기
온라인저지

[BOJ] 1158번: 조세퍼스 문제

by plzfday 2018. 7. 26.

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

댓글