프로그래머스: 전화번호 목록(Swift)

프로그래머스 2단계 문제. 생각보다 어렵지는 않다. 

hash대신에 Dictionary를 사용해 풀었다. phone_book를 정리한 후 Dictionary에 삽입 후 순서대로 비교한다. 단 해당 번호는 Dictionary에서 삭제해야한다. 안그러면 무조건 false가 나온다.

import Foundation

extension String{
    func starstWith(var input : String)->Bool{
        if self == input.prefix(self.count) {
            return true
        }
        return false
    }
}

func solution(phone_book : [String])->Bool{
    var answer = true
    var list = phone_book.sorted()
    var phoneDictionaryList : [String:Int] = [:]
    for item in phone_book {
        phoneDictionaryList[item] = item.count
    }
    for item in phoneDictionaryList.keys{
        var number = item
        phoneDictionaryList[item] = nil
        for prime in phoneDictionaryList.keys {
            if prime.starstWith(var: number) {
                answer = false
                return answer
            }
        }
    }
    return answer
}

원래는 자바로도 풀으려 했으나 remove를 사용할때 오류가 터져서 해결하지 못했다..