iOS 개발 공부

[Swift] 단어 변환 본문

코딩테스트/프로그래머스

[Swift] 단어 변환

물복딱복준복 2023. 4. 18. 17:20
import Foundation

extension String {
    func isPossibleChange(_ target: String) -> Bool {
        zip(Array(self), Array(target))
            .filter { $0 != $1 }
            .count == 1 ? true : false
    }
}

func solution(_ begin:String, _ target:String, _ words:[String]) -> Int {
    
    if !words.contains(target) { return 0 }
    
    var result: [Int] = []
    
    func dfs(_ begin: String, _ target: String, _ words: [String], _ count: Int){
        if begin == target {
            result.append(count)
            return
        }
        
        if words.isEmpty {
            result.append(0)
            return
        }
        
        let isPossible = words.map { return begin.isPossibleChange($0) }
        
        for (offset, result) in isPossible.enumerated() {
            if result {
                var tmp = words
                tmp.remove(at: offset)
                dfs(words[offset], target, tmp, count + 1)
            }
        }
    }

    dfs(begin, target, words, 0)

    return result.min()!
}

 

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[Swift] 조이스틱  (0) 2023.04.24
[Swift] 여행경로  (0) 2023.04.20
[Swift] 네트워크  (0) 2023.04.18
[Swift] 덧칠하기  (0) 2023.04.15
[Swift] 카드뭉치  (0) 2023.04.14