taek0622/Algorithm-Notes

[Study] BOJ 11729번 문제 - mutating 키워드

Opened this issue · 0 comments

백준 11729번 문제를 풀면서 mutating 키워드를 사용하여 해결한 답안을 보았는데, 대략적으로 mutating 키워드의 역할을 알긴하지만, 정확하게 알고 사용하고 있지는 않아서 해당 키워드에 대해 더 공부해보려 한다.
아래는 11729번의 mutating을 사용한 답안이다.

let N = Int(readLine()!)!
var hanoi = Hanoi()

hanoi.move(N, "1", "2", "3")

print("\(hanoi.count)\n\(hanoi.result)")

struct Hanoi {
    var count = 0
    var result = ""

    mutating func move(_ N: Int, _ from: String, _ mid: String, _ to: String) {
        count += 1

        if N == 1 {
            result += "\(from) \(to)\n"
        } else {
            move(N - 1, from, to, mid)
            result += "\(from) \(to)\n"
            move(N - 1, mid, from, to)
        }
    }
}