백준
[1158번] 조세퍼스 문제
2744m
2019. 3. 15. 19:44
www.acmicpc.net
/*1158번 조세퍼스 문제*/
#include <iostream>
#include <vector>
using namespace std;
vector<int>V;
int N, M;
int main() {
ios::sync_with_stdio(0), cin.tie(0);
cin >> N >> M;
for (int i = 1; i <= N; i++) V.push_back(i);
int curr = M - 1;
cout << '<';
while (V.size() > 1) {
cout << V[curr] << ", ";
V.erase(V.begin() + curr);
if (V.size() == 0) break;
curr = (curr + M - 1) % V.size();//다음 위치 구하기
}
cout << V[0] << '>';
}
이 문제는 벡터를 이용해서 M의 배수에 해당하는 위치를 지워가면 된다.
curr이 벡터의 사이즈를 넘으면 다시 앞으로 되돌려 보내기 위해 벡터의 사이즈 만큼 나눠 나머지 값을 활용한다.
한가지 주의점은 출력에 < 와 ,가 들어가는 만큼 신경써서 출력을 해줘야하는데
나는 원소가 N, M의 값이 1일 때를 생각하지 않고 작성을 해서 계속 오답처리가 되었다.;;