프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
from collections import deque
def solution(begin, target, words):
answer = 0
visited = dict()
for w in words:
visited[w] = False
q = deque([(begin, 0)])
visited[begin] = True
while q:
now, cnt = q.popleft()
if now == target:
return cnt
# 문자열 비교
for w in words:
tmp = 0
for i in range(len(now)):
if w[i] != now[i]:
tmp += 1
if tmp == 1 and not visited[w]:
q.append((w, cnt + 1))
visited[w] = True
return 0
BFS로 풀이하였다.
우선 begin 단어를 큐에 넣고 단어에서 한 글자만 바꿔서 변환이 가능한 단어들을 찾아서 큐에 추가해준다. 이때 큐에 추가한 단어들은 방문 처리를 해서 다시 방문하는 일이 없도록 한다.
'문제풀이 > DFS_BFS' 카테고리의 다른 글
[Python/파이썬] 프로그래머스 피로도 (0) | 2022.12.19 |
---|---|
[Python/파이썬] 프로그래머스 타겟 넘버 (0) | 2022.12.02 |
[Python/파이썬] 프로그래머스 네트워크 (0) | 2022.10.14 |
[Python/파이썬] 2022 KAKAO BLIND RECRUITMENT 양궁대회 (0) | 2022.10.12 |
[Python/파이썬] 백준 16724번 피리 부는 사나이 (1) | 2022.10.06 |
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
from collections import deque def solution(begin, target, words): answer = 0 visited = dict() for w in words: visited[w] = False q = deque([(begin, 0)]) visited[begin] = True while q: now, cnt = q.popleft() if now == target: return cnt # 문자열 비교 for w in words: tmp = 0 for i in range(len(now)): if w[i] != now[i]: tmp += 1 if tmp == 1 and not visited[w]: q.append((w, cnt + 1)) visited[w] = True return 0
BFS로 풀이하였다.
우선 begin 단어를 큐에 넣고 단어에서 한 글자만 바꿔서 변환이 가능한 단어들을 찾아서 큐에 추가해준다. 이때 큐에 추가한 단어들은 방문 처리를 해서 다시 방문하는 일이 없도록 한다.
'문제풀이 > DFS_BFS' 카테고리의 다른 글
[Python/파이썬] 프로그래머스 피로도 (0) | 2022.12.19 |
---|---|
[Python/파이썬] 프로그래머스 타겟 넘버 (0) | 2022.12.02 |
[Python/파이썬] 프로그래머스 네트워크 (0) | 2022.10.14 |
[Python/파이썬] 2022 KAKAO BLIND RECRUITMENT 양궁대회 (0) | 2022.10.12 |
[Python/파이썬] 백준 16724번 피리 부는 사나이 (1) | 2022.10.06 |