728x90

www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

벡터의 원소를 직접 제거해가면서 풀었다.

주의할 점은 벡터의 크기가 점점 줄어들기 때문에 index가 벡터의 범위를 넘어가지 않게 % 연산자를 이용해 조정해줘야 한다.

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	int n, k;
	cin >> n >> k;
	vector<int> v(n);
	for (int i = 0; i < n; i++) {
		v[i] = i + 1;
	}
	int index = 0;
	while (!v.empty()) {
		if (v.size() == n) {
			cout << '<';
		}
		index += (k - 1);
		index %= v.size();
		cout << v[index];
		v.erase(v.begin() + index);
		if (v.empty()) {
			cout << '>';
		}
		else {
			cout << ", ";
		}
	}
	return 0;
}
728x90

'알고리즘 문제' 카테고리의 다른 글

[백준] 1074번 Z  (0) 2021.01.04
[백준] 1004번 어린 왕자  (0) 2021.01.03
[백준] 2217번 로프  (0) 2021.01.02
[백준] 10799번 쇠막대기  (0) 2021.01.02
[백준] 5582번 공통 부분 문자열  (0) 2020.09.10

+ Recent posts