본문 바로가기
백준 문풀

백준 11866

by 기록을안하면바보 2024. 5. 8.

요세푸스 문제

#include<iostream>
#include<deque>

using namespace std;
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int size, num,count;
	cin >> size >> num;
	count = num-1;
	deque<int>yo;

	for (int i = 1;i <= size;i++) {
		yo.push_back(i);
	}
	cout << '<';
	int m = size;
	for (int i = 1;i <= m;i++) {
		cout << yo[count];
		yo.erase(yo.begin()+count );
		size -= 1;
		
		if (size > 0) {
			count = (count + num - 1) % size;
		}
		
		if (! yo.empty()) {
			cout << ','<<' ';
		}
	}

	cout << '>';
	return 0;

}

 size를 하나씩 줄여가며 식을 수행하는데 zerodivision 에러가 일어나고 있었던걸 눈치채는데 좀 오래걸렸다.

어쩐지 마지막 '>' 부분만 계속 출력이 안되더라..

원형 자료구조를 이용하면서 인덱스로 접근하고 싶어서 데크를 이용해 풀이했다.

for문을 이용해 데크의 원소를 1부터 오름차순으로 push해주었고

다음 for문을 통해 순서대로 원소를 출력하고, 삭제하는 과정을 반복해 주었다. 

인덱스번호는 0부터  시작함에 유의해 계산시 count에서 -1도 빼주는것을 까먹지 않도록.... 

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

백준 1931  (0) 2024.05.20
백준 11047  (0) 2024.05.15
백준 2840  (0) 2024.05.08
백준 1764  (0) 2024.05.06
백준 11478  (0) 2024.05.06