코테 준비/프로그래머스

[level 2] 단어변환

쿠쿠*_* 2023. 11. 5. 14:42

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

핵심포인트

dfs와 bfs 둘다의 방식으로 문제를 풀수 있는데 dfs에서 if문을 이중으로 한줄로 쓸수 있는 부분이 신기하기도 하고 효율적으로 보였다.. 익숙하지는 않지만 자연스럽게 쓸수 있도록 문제를 많이 풀어봐야겠다.

#dfs
answer=0

def dfs(begin,target,words,visited):
    global answer
    stacks=[begin]
    while stacks:
        stack=stacks.pop()
        if stack==target:
            return answer
        for w in range(0,len(words)):
            if len([i for i in range(0,len(words[w])) if words[w][i]!=stack[i]])==1: #요부분!
                if visited[w]!=0:
                    continue
                visited[w]=1
                stacks.append(words[w])
        answer+=1
                
def solution(begin,target,words):
    global answer
    if target not in words:
        return 0
    visited=[0 for i in words]
    dfs(begin,target,words,visited)
    return answer
#bfs
from collections import deque

def solution(begin,target,words):
    answer=0
    q=deque()
    q.append([begin,0])
    V=[0 for i in range(len(words))]
    while q:
        word,cnt=q.popleft()
        if word==target:
            answer=cnt
            break
        for i in range(len(words)):
            temp_cnt=0
            if not V[i]:
                for j in range(len(word)):
                    if word[j]!=words[i][j]:
                        temp_cnt+=1
                if temp_cnt==1:
                    q.append([words[i],cnt+1])
                    V[i]=1
    return answer

'코테 준비 > 프로그래머스' 카테고리의 다른 글

[level 3] N으로 표현  (0) 2023.11.05
[level 3] 여행경로  (0) 2023.11.05
[level 2] 네트워크  (0) 2023.09.30
[level 2] 타겟넘버  (0) 2023.09.30
[SQL_JOIN]  (0) 2023.06.13