본문 바로가기
백준

[1158번] 조세퍼스 문제

by 2744m 2019. 3. 15.
1158번: 조세퍼스 문제
 
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일 때를 생각하지 않고 작성을 해서 계속 오답처리가 되었다.;;

'백준' 카테고리의 다른 글

[5430번] AC  (0) 2019.03.21
[1966번] 프린터 큐  (0) 2019.03.19
[1874번] 스택 수열  (0) 2019.03.15
[10867번] 중복 빼고 정렬하기  (0) 2019.03.13
[1181번] 단어 정렬  (0) 2019.03.13

댓글