코딩테스트

프로그래머스 하노이의 탑

yolang 2024. 7. 29. 01:04
728x90

 

🔗 하노이의 탑 

 

📌오늘의 학습 키워드

  • 오늘은 유명한 하노이의 탑 문제가 나왔다. 재귀를 대표하는 문제로 생각을 좀 해야 한다고 생각한다. 

✨공부한 내용 본인의 언어로 정리하기

  • 문제를 나눠서 생각하는 방법을 알아야한다. 그 과정에서 중요한 것들만 살리고 다른 것들은 묵음 처리(?) 해버리는 선택적 집중 능력!
  • 여기에서도 가장 위에있는 블록만 생각하고 나머지는 한 뭉텅이로 생각한 다음에 그것을 그대로 재귀로 돌려야 한다. 

📚오늘의 회고

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지
    • 처음 하노이의 탑 문제를 푼 지 한 5년이 지난 거 같은데 이번에도 시원치 않게 했다.. 
    • 문제에서 1, 2, 3개의 기둥이 있고 1에 있는 것들을 모두 3 기둥으로 옮겨야 한다. 그렇다면 제일 위의 것을 2 기둥으로 옮기고 아래 전부를 3 기둥으로 옮긴다고 생각한다. 이것을 재귀로 나타내면 된다.
  • 어떻게 해결했는지
    • 인자로 무엇을 넘겨야 하는 지 고민하다가 살짝 치팅을 했다😇
  • 무엇을 새롭게 알았는지
    • 나는 아직 멀었다는 것을. ㅋㅋㅋ
  • 내일 학습할 것은 무엇인지
    • 재귀 다시 해야겠다...호호~

[🤓문제 해결 코드]

def solution(n):
    answer = []
    def move(N, start,mid):
        answer.append([start, mid])
    def hanoi(N, start, mid, end):
        if N == 1:
            move(1, start, end)
        else:
            hanoi(N-1, start, end, mid)
            move(N, start, end)
            hanoi(N-1, mid, start, end)
    hanoi(n, 1, 2, 3)
    return answer
728x90