프로그래머스 - 단어 변환

So,Soon·2020년 5월 7일
1
post-custom-banner

https://programmers.co.kr/learn/courses/30/lessons/43163

접근

정말 기본 dfs 문제입니다. 잔실수 안하면 금방 풀 수 있습니다. 레벨3이라고 되어 있는데, 조금은 이해가 되지 않습니다.

그냥 visit배열을 사용해서 한번 변환한 문자열로는 다시 변환하지 않는 것만 처리해주시고,

문자열이 1개만 다르다는걸 제대로 판단하시면 됩니다.

가끔 이 문제에서 문자열이 3글자만 올수있다고 생각하시는 분들도 계시지만, 문자열은 3~10글자로 올수 있습니다.

그리고 교집합으로 푸시면 안됩니다. 순서도 같아야 하는데,len(set(a) & set(b)) == 1 로 푸시면

'asd'와 'csa'가 한글자만 바뀌었다고 판단하게 됩니다.

코드 전문입니다.

visit = []
res = []
def solution(begin, target, words):
    answer = 0

    co = 0
    for i in range(len(words)):
        visit.append(0)


    def dfs(word,depth):
        if word == target:
            res.append(depth)
            return
        else:
            for i in range(len(words)):
                if visit[i] == 1:
                    continue

                co = 0
                for j in range(len(word)):
                    if word[j] != words[i][j]:
                        co += 1
                if co == 1:
                    visit[i] = 1
                    dfs(words[i],depth+1)
                    visit[i] = 0

    dfs(begin,0)
    if len(res) != 0 :
        answer = min(res)
    return answer
profile
iOS Software Engineer, Audio Software Engineer, SKKU Computer Science, Business Administration
post-custom-banner

0개의 댓글