Bonfire

99클럽 코테 스터디 5일차 TIL 프로래머스 단어 변환 본문

알고리즘/99 코테 스터디

99클럽 코테 스터디 5일차 TIL 프로래머스 단어 변환

pecan 2024. 6. 2. 22:25

 

프로그래머스 단어 변환

이 문제는 bfs를 활용하여 해결하였다.

bfs의 특징인 가까운 거리를 먼저 찾는 특징을 활용할 수 있어 쉽게 풀었던 것 같다.

논리는 queue에 시작 단어를 넣고, 다른 단어들을 비교하며, 한번도 변환되어본 적 없는 "1글자만 다른 단어"를 체크하며 다시 queue에 넣어주는 방식이다.

 

나의 풀이

 

from collections import deque
def solution(begin, target, words):
    visited={}
    for w in words:
        visited[w]=0
    visited[target]=0
    visited[begin]=1

    def bfs(start):
        que=deque()
        que.append(start)
        while que:
            word=que.popleft()
            for next_word in words:
                if visited[next_word]==0 or visited[next_word]>visited[word]+1:
                    diff=0
                    for i in range(len(next_word)):
                        if word[i]!=next_word[i]:
                            diff+=1
                    if diff==1:
                        if visited[next_word]>visited[word]+1:
                            visited[next_word]=visited[word]+1
                            que.append(next_word)
                        elif visited[next_word]==0:
                            visited[next_word]=visited[word]+1
                            que.append(next_word)
        return
    
    bfs(begin)
    
    if visited[target]:
        return visited[target]-1
    else:
        return 0

 

TIL 회고

TIL을 쓰는데 있어서, 어제는 개인적인 용무로 인해 쓰지 못했지만, 매일 쓰는 것이 정말 힘든 것 같다.

99클럽의 챌린지는 매일 연속으로 써야 상품을 주는데, 더욱 정성을 들여 쓰면, 역으로 다른 공부를 하지 못하기 때문에, 정말 자신이 중요한 개념을 배우고, 습득했을때 쓰는 버릇을 들이면 좋을 것 같다.

내일은 도서관에 가서 밀린 영어공부를 시작하고, 나 자신의 삶을 되돌아보며, 모두에게 당당할 수 있는 자소서를 써보고 싶다.