본문 바로가기

알고리즘

[코딩 테스트] Level. 2 하노이의 탑 (코틀린)

728x90

 

https://school.programmers.co.kr/learn/courses/30/lessons/12946

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

'하노이의 탑' 문제 이 문제는 어려워서 못 풀었다.  이 분이 그래도 잘 정리 해 주신 것 같다. 

 

https://shoark7.github.io/programming/algorithm/tower-of-hanoi

 

'하노이의 탑' 이해하기

'하노이의 탑' 문제를 이해하고 문제 해결을 위한 핵심 통찰을 살핀 뒤 코드로 작성합니다. 이후 탑의 개수에 따른 총 이동 횟수를 구하는 일반항까지 수학적으로 유도합니다.

shoark7.github.io

 

 

 

고수들의 문제 풀이 

class Solution
{
    var answer = mutableListOf<IntArray>()

    fun solution(n: Int): Array<IntArray>
    {
        hanoi(n, 1, 2, 3)

        return answer.toTypedArray()
    }

    fun hanoi(n: Int, from: Int, _by: Int, to: Int)
    {
        if (n == 1)
            answer.add(intArrayOf(from, to))
        else
        {
            hanoi(n - 1, from, to, _by)
            answer.add(intArrayOf(from, to))
            hanoi(n - 1, _by, from, to)
        }
    }
}

 

레벨 2로 올라오니까 확실히 난이도도 좀 높아진 것 같다. 

맨 뒤부터 풀고 있는데 재귀함수에 대해서 많이 나오는 것 같다.