1914번: 하노이 탑
세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로
www.acmicpc.net
C++ 백준 11729 (하노이 탑 이동순서) (seongmok.com)
C++ 백준 11729 (하노이 탑 이동순서)
백준 11729 (하노이 탑 이동순서) https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰
seongmok.com
[C언어/C++] pow, sqrt 함수에 대해서(루트함수, 제곱, 제곱근) (tistory.com)
[C언어/C++] pow, sqrt 함수에 대해서(루트함수, 제곱, 제곱근)
안녕하세요. BlockDMask 입니다 오늘은 (저는) 자주 쓰지는 않지만 꼭 알아둬야하는 함수를 두개 묶어서 가지고왔습니다. 바로 pow, sqrt 함수인데요. 중학교때 제곱과 제곱근(루트) 배우셨죠? 그걸이
blockdmask.tistory.com
2의 n 승을 연산하고 싶을 때
1. cmath 헤더파일 불러와서 pow() 메서드 이용 - pow는 float로 출력함
#include <cmath>
(int)pow(2,n) - 1;
2. 시프트 연산
(1<<n) - 1;
그렇게 기본적인 하노이 코드를 완성했는 데
틀렸다
문제의 코드
#include <iostream>
#include <cmath>
using namespace std;
void hanoi(int n, int start, int mid, int end){
if(n == 1) {
cout << start << " " << end << "\n";
return;
}
hanoi(n-1, start, end, mid);
cout << start << " " << end << "\n";
hanoi(n-1, mid, start, end);
}
int main()
{
int n;
cin >> n;
cout << (int)pow(2,n) - 1 << "\n";
if(n <= 20) hanoi(n, 1, 2 , 3);
return 0;
}
백준 1914번 : 하노이 탑 c++ — 나의 개발일지 (tistory.com)
백준 1914번 : 하노이 탑 c++
https://www.acmicpc.net/problem/1914 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음
chan9.tistory.com
검색해보니 n이 100까지 가서 너무 큰 수가 출력 되므로 string으로 변환해서 해줬어야 했던 것
전에도 이런 문제 있었는 데!
하노이탑 과정은 안건드려도 되고, 최소 이동 과정만 변형 해줘도 됐다.
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
void hanoi(int n, int start, int mid, int end){
if(n == 1) {
cout << start << " " << end << "\n";
return;
}
hanoi(n-1, start, end, mid);
cout << start << " " << end << "\n";
hanoi(n-1, mid, start, end);
}
int main()
{
int n;
cin >> n;
string a = to_string(pow(2, n));
int x = a.find('.'); //pow 함수 결과가 실수형이기에 소수점 찾기
a = a.substr(0, x); //소수점 앞자리만 나오게하기
a[a.length() - 1] -= 1;
cout << a << "\n";
if(n <= 20) hanoi(n, 1, 2 , 3);
return 0;
}
++ 스터디 호롤ㄹ로로 씨가 보내주신 좋은 설명 링크
무조건 이해시켜 드립니다. 비법 대방출! 재귀 알고리즘 Recursion - 하노이탑, 피보나치 수열 - YouTube
'‡ CODING TEST STUDY ‡ > º 백준' 카테고리의 다른 글
[백준 2630번 C++] 색종이 만들기 (0) | 2023.09.21 |
---|---|
[백준 11729번 C++] 하노이 탑 이동 순서 (0) | 2023.09.21 |
[백준 17478번 C++] 재귀함수가 뭔가요? (1) | 2023.09.21 |
[백준 10870번 C++] 피보나치 수 5 (1) | 2023.09.20 |
[백준 11286번 C++] 절대값 힙 (0) | 2023.09.17 |