백준 요세푸스 문제에 대해 질문드립니다.

21.11.16 03:59 작성 조회수 328

0

 

1158번: 요세푸스 문제 (acmicpc.net)

 

인프런에서 코딩테스트 강의를 수강중인데, 해당 강의에서의 조세퍼스(요세푸스) 문제를 보고 vector를 이용하여 문제를 풀었고, 해당 문제는 답까지 맞췄습니다.

 

그러다 인터넷에서 우연히 백준 사이트에 같은 유형의 문제를 발견해서,

한번 시험 삼아 입력 출력을 위의 백준 사이트의 해당 문제에서 원하는 것으로 바꾼 뒤에 제출을 해봤더니,

'틀렸습니다!' 라고 나옵니다.

 

일단 비주얼 스튜디오 에서는 예제가 정상적으로 출력이 되는 것을 확인했고, 백준 사이트에서 '틀렸습니다!' 라고 뜰때도 딱히 컴파일에 문제가 있다거나 뭐가 문제가 있는 것이 아무것도 뜨지않았습니다.

 

논리적으로 틀렸다거나 알고리즘에 문제가 있는 것인지.. 같은 유형의 문제를 풀었는데 어디는 정답이고 어디는 틀렸다고 떠서 조금 당황스럽습니다. 어디가 틀린 부분인지 궁금합니다..

 

해당 코드입니다.

 

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

int main()
{
	int N = 0;
	int K = 0;
	int i = 0;

	cin >> N >> K;

	vector<int> v;
	v.resize(N);

	for (int i = 0; i < N; i++)
		v[i] = i + 1;

	cout << "<";

	while (static_cast<int>(v.size()) != 1)
	{
		for (int cnt = 1; cnt <= K; cnt++)
		{
			if (static_cast<int>(v.size()) == i)
				i = 0;
			i++;
		}
		i--;
		cout << v[i] << ", ";
		v.erase(v.begin() + i);
	}

	cout << v[i] << ">";

	return 0;
}

 

 

 

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!