[프로그래머스 LV3] 단어 변환

Junyoung Park·2022년 8월 12일
0

코딩테스트

목록 보기
549/631
post-thumbnail

1. 문제 설명

단어 변환

2. 문제 분석

문자열 인덱스를 잘 다루는 방법을 하나 배웠다!

3. 나의 풀이

import Foundation

func solution(_ begin:String, _ target:String, _ words:[String]) -> Int {
    var wordBag = Set<String>()
    var queue = [(String, Int)]()
    queue.append((begin, 0))
    wordBag.insert(begin)
    var index = 0
    
    while queue.count > index {
        let curData = queue[index]
        let curWord = curData.0
        let curCnt = curData.1
        
        if curWord == target {
            return curCnt
        }
        
        for word in words {
            if !wordBag.contains(word) && isChangable(curWord, word) {
                wordBag.insert(word)
                queue.append((word, curCnt + 1))
            }
        }
        
        index += 1
    }
    
    
    return 0
}

func isChangable(_ word1: String, _ word2: String) -> Bool {
    if word1.count != word2.count {
        return false
    }
    var sameLetterCnt = 0
    for idx in 0..<word1.count {
        let letter1 = word1[word1.index(word1.startIndex, offsetBy: idx)]
        let letter2 = word2[word2.index(word2.startIndex, offsetBy: idx)]
        if letter1 == letter2 {
            sameLetterCnt += 1
        }
    }
    
    if sameLetterCnt == word1.count - 1 {
        return true
    } else {
        return false
    }
}
profile
JUST DO IT

0개의 댓글