2.프로그래머스 lv3 - 하노이의 탑 스위프트

less than 1 minute read

1.프로그래머스 lv3 - 하노이의 탑



문제 : 하노이의 탑



diagrams.net 에서 처음 그려본 기념으로 올려보는 포스트.

1 번 막대, 2번 막대, 3번 막대를 그린뒤
A,B,C 3개의 원반을 그린다.
코드를 실행한 후 log 의 설명을 따라가본 뒤
순서도를 보면 하노이의 탑을 좀 더 쉽게 이해할수있다

image



var n = 3

func solution(_ n:Int) -> [[Int]] {
    var hanoiArray: [[Int]] = []
    
        func hanoi(_ n: Int, _ from: Int, _ by: Int, _ to: Int) -> [[Int]] {
            
            if n == 1 {
                print("\(from)번 막대에 있는 첫번째 원반을 \(to)번 막대로 이동 ( 이 원판은 다음 이동될때 \(by)번 막대에 쌓인것 마킹)-1 실제이동 ")
                hanoiArray.append([from,to]) // 원반이동
                
            } else {
                
                hanoi(n-1, from,to,by)
                print("\(from)번 막대에 있는 \(n-1) 번 원반을 \(to)번 막대로 이동 ( 이 원판은 다음 이동될때 \(by)번 막대에 쌓인것 마킹)-2 실제이동 ")
                hanoiArray.append([from,to]) // 원반이동
            
                hanoi(n-1, by,from,to)
                print("return \n")
            }
        return hanoiArray
        }

    return hanoi(n,1,2,3)
}

solution(n)



Leave a comment