문제 : 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 } }