반응형
안녕하세요. BlockDMask 입니다.
오늘은 codeground 두번째 문제 '하노이 타워'를 풀어보았습니다.
0. 제목
코드그라운드 하노이 타워
CodeGround Hanoi tower
1. 문제설명
세개의 타워가 있고
첫번째 타워에 서로 다른 접시 N개가 쌓여있습니다.
첫번째 타워에 놓여있는 모든 접시를 세번째 타워로 옮기고자 할때,
접시를 옮기는 순서를 출력하라.
접시는 한 번에 하나만 옮길 수 있고, 한 타워의 맨 위 접시를 다른 타워의 맨 꼭대기에 올릴 수 있다.
큰접시 위에 작은접시가 올라가야만 한다.
(작은 접시위에 큰접시 올라오는것 불가능)
2. 풀이과정
알고리즘 수업을 들었던 사람은
재귀 함수 파트에서 꼭 한번은 배웠던 하노이 타워(Hanoi Tower) 문제입니다.
유명한 만큼 설명은 생략하겠습니다.
3. 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <iostream> using namespace std; void hanoi(int ring, int from, int by, int to){ if(ring ==1){ cout << from << " -> " << to << endl; }else{ hanoi(ring-1, from, to, by); cout << from << " -> " << to << endl; hanoi(ring-1, by, from, to); } return ; } int main(int argc, char** argv) { int T, test_case; cin >> T; int ring, from, by, to; for(test_case = 0; test_case < T; test_case++) { cin >> ring; cout << "Case #" << test_case+1 << endl; hanoi(ring, 1, 2, 3); } return 0; } | cs |
4. 인증
사이트 경로 : home>practice>하노이 타워
https://www.codeground.org/practice/practiceProblemView
문제 출처 : 충북대학교 프로그래밍 경진대회
감사합니다.
반응형
'<알고리즘 문제풀이&연습> > [C++] 백준, 프로그래머스 등등' 카테고리의 다른 글
[백준 11004] K번째 수 (0) | 2017.09.08 |
---|---|
[백준 10845] 큐 (C, C++ Queue) (6) | 2017.08.21 |
[백준 2747] 피보나치 수 (2) | 2017.08.17 |
[백준 2108] 통계학 (최빈값, 산술평균, 중앙값, 범위) (0) | 2017.08.11 |
[CodeGround] 극단적인 수 (0) | 2017.08.04 |
[백준 1929] 소수 구하기 (에라토스테네스의 체) (1) | 2017.08.03 |
[백준 1181] 단어정렬 (vector, array) (1) | 2017.08.02 |
[백준 1475] 방 번호 (0) | 2017.08.01 |