https://school.programmers.co.kr/learn/courses/30/lessons/43163?language=python3
첫 풀이
1. deque를 사용해 너비우선탐색을 사용했다
from collections import deque
def solution(begin, target, words):
answer = 0
visited=[0 for _ in range(len(words))]
q=deque()
q.append(begin)
while q:
word=q.popleft()
if word==target:
answer=visited[words.index(target)]
break
for i in range(len(words)):
if visited[i]==0:
check=0
for j in range(len(word)):
if words[i][j]!=word[j]:
check+=1
if check==1:
if word==begin:
visited[i]=1
else:
visited[i]=visited[words.index(word)]+1
q.append(words[i])
return answer
더 나은 답안
1. target이 words 리스트 안에 없으면 탐색을 진행할 필요가 없어서 위에서 컷하는 코드를 추가했다
from collections import deque
def solution(begin, target, words):
answer = 0
if target not in words:
return answer
visited=[0 for _ in range(len(words))]
q=deque()
q.append(begin)
while q:
word=q.popleft()
if word==target:
answer=visited[words.index(target)]
break
for i in range(len(words)):
if visited[i]==0:
check=0
for j in range(len(word)):
if words[i][j]!=word[j]:
check+=1
if check==1:
if word==begin:
visited[i]=1
else:
visited[i]=visited[words.index(word)]+1
q.append(words[i])
return answer
배운 점
1. 탐색 알고리즘을 배우고 있었는데 적용해볼 수 있었다
2. 탐색 문제에서는 전체를 탐색하는 만큼 조건에 따라 위에서 컷하면 시간을 단축할 수 있다
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] SQL 문제풀이 - 조건에 부합하는 중고거래 댓글 조회하기 (1) | 2023.03.13 |
---|---|
[프로그래머스] 파이썬 문제풀이 - 등굣길 (0) | 2023.03.04 |
[프로그래머스] SQL 문제풀이 - 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2023.02.09 |
[프로그래머스] SQL 문제풀이 - 12세 이하인 여자 환자 목록 출력하기 (0) | 2023.02.09 |
[프로그래머스] SQL 문제풀이 - 평균 일일 대여 요금 구하기 (0) | 2023.02.09 |
댓글