경험의 기록

문제 : programmers.co.kr/learn/courses/30/lessons/43163

 

코딩테스트 연습 - 단어 변환

두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수

programmers.co.kr

 

 

import kotlin.math.*

class Solution {
    var visited = Array(50){0}
    var answer = 100
    
    fun solution(begin: String, target: String, words: Array<String>): Int {
        // dfs
        fun find(cut : Int, curStr : String){
        if(curStr == target){
            answer = min(answer,cut)
        }
        for(i in words.indices){
            if(visited[i] == 0 && stringCompare(words[i],curStr)){
                visited[i] = 1
                find(cut+1,words[i])
                visited[i] = 0
                }
            }
        }
        
    find(0,begin)

    if(answer==100) return 0
        
    return answer
        
    }
    
    // a 문자열이 b 문자열로 변환 가능한가?
    fun stringCompare(a : String, b : String) : Boolean{
        var count = 0

        for(i in a.indices){
            if(a[i] != b[i]) count++
        }

        return count == 1
    }
}
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading