by CodeJin19
~1 min read

Categories

Tags

오늘의 문제는 “11729번 하노이 탑 이동순서”.

유명한 문제인 하노이 탑의 이동 순서를 출력하는 문제인데, 이번에도 역시 단순한 이유로 틀렸다.

장대에 쌓인 원판의 개수가 입력으로 주어지는데,

이 때, 정수 n의 범위는 1이상 20이하이다.

출력으로는 원판의 총 이동 횟수와 이동 순서를 출력하면 된다.

#include <iostream>

using namespace std;

int main()
{
	int num;

	cin >> num;

	cout << pow(2, num) - 1 << "\n";    //하노이 탑의  이동 횟수는 2^n - 1이다
	hanoi(num, 1, 3, 2);                //hanoi함수는 생략했다

	return 0;
}

아무리 봐도 틀린 부분이 없다고 생각하던 순간, 입력으로 20을 넣어보니

1.04858e+06

라며 지수형식으로 출력이 됐다.

따라서 정수를 고정출력하게끔 고쳤다.

#include <iostream>

using namespace std;

int main()
{
	int num;

	cin >> num;

  cout << fixed;
  cout.precision(0);
	cout << pow(2, num) - 1 << "\n";    //하노이 탑의  이동 횟수는 2^n - 1이다
	hanoi(num, 1, 3, 2);                //hanoi함수는 생략했다

	return 0;
}

입력의 최댓값이 int형 범위라는 것은 확인했지만, 출력이 잘 되는지를 확인하지 않아서 틀렸다.

앞으로는 숫자를 출력하는 경우 지수표현으로 넘어가지 않는지 유념해야겠다.