๋ฌธ์ ์ค๋ช
๋ ๊ฐ์ ๋จ์ด begin, target๊ณผ ๋จ์ด์ ์งํฉ words๊ฐ ์์ต๋๋ค. ์๋์ ๊ฐ์ ๊ท์น์ ์ด์ฉํ์ฌ begin์์ target์ผ๋ก ๋ณํํ๋ ๊ฐ์ฅ ์งง์ ๋ณํ ๊ณผ์ ์ ์ฐพ์ผ๋ ค๊ณ ํฉ๋๋ค.
1. ํ ๋ฒ์ ํ ๊ฐ์ ์ํ๋ฒณ๋ง ๋ฐ๊ฟ ์ ์์ต๋๋ค.
2. words์ ์๋ ๋จ์ด๋ก๋ง ๋ณํํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด begin์ด "hit", target๊ฐ "cog", words๊ฐ ["hot","dot","dog","lot","log","cog"]๋ผ๋ฉด "hit" -> "hot" -> "dot" -> "dog" -> "cog"์ ๊ฐ์ด 4๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ๋ณํํ ์ ์์ต๋๋ค.
๋ ๊ฐ์ ๋จ์ด begin, target๊ณผ ๋จ์ด์ ์งํฉ words๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ต์ ๋ช ๋จ๊ณ์ ๊ณผ์ ์ ๊ฑฐ์ณ begin์ target์ผ๋ก ๋ณํํ ์ ์๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๊ฐ ๋จ์ด๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ๊ฐ ๋จ์ด์ ๊ธธ์ด๋ 3 ์ด์ 10 ์ดํ์ด๋ฉฐ ๋ชจ๋ ๋จ์ด์ ๊ธธ์ด๋ ๊ฐ์ต๋๋ค.
- words์๋ 3๊ฐ ์ด์ 50๊ฐ ์ดํ์ ๋จ์ด๊ฐ ์์ผ๋ฉฐ ์ค๋ณต๋๋ ๋จ์ด๋ ์์ต๋๋ค.
- begin๊ณผ target์ ๊ฐ์ง ์์ต๋๋ค.
- ๋ณํํ ์ ์๋ ๊ฒฝ์ฐ์๋ 0๋ฅผ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์
์์ #1
๋ฌธ์ ์ ๋์จ ์์ ๊ฐ์ต๋๋ค.
์์ #2
target์ธ "cog"๋ words ์์ ์๊ธฐ ๋๋ฌธ์ ๋ณํํ ์ ์์ต๋๋ค.
ํ์ด ์ฝ๋
from collections import deque
def compare(a, b):
cnt = 0
for idx, string in enumerate(a):
if b[idx] == string:
cnt += 1
return True if cnt == len(b)-1 else False
def bfs(begin, target, words):
queue = deque()
queue.append([begin, 0])
visited = {key:False for key in words}
result = []
while queue:
word, count = queue.popleft()
if word == target:
result.append(count)
continue
if word != begin:
visited[word] = True
for other in words:
if not visited[other] and compare(word, other):
queue.append([other, count + 1])
return min(result) if result else 0
def solution(begin, target, words):
answer = bfs(begin, target, words)
return answer
BFS(๋๋น ์ฐ์ ํ์)๋ฅผ ํ์ฉํด ํ์๋ค.
ํ ๋ด๋ถ์ [ํ์ฌ ๋จ์ด, ๊ฑฐ์ณ ์ง๋๊ฐ ์]๋ฅผ ์ฝ์ ํ ํ ๋ก์ง์ ์์ํ๋ค.
ํ์ฌ ๋จ์ด์ ๋ด๊ฐ ์ํ๋ ํ๊ฒ ๋จ์ด๊ฐ ๋์ผํ๋ค๋ฉด ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ์ฝ์ ํ๊ณ ๋ค์ ์์์ ๋ํด ๋์ด๊ฐ๋ค.
์์ง ๋ฐฉ๋ฌธํ์ง ์๊ณ , ๋ค๋ฅธ ๋จ์ด์ ๋น๊ตํด์ ํ ์๋ฆฌ๋ง ๋ค๋ฅด๋ค๋ฉด, ํ์ ํด๋น ๋จ์ด๋ฅผ ๋ฃ๊ณ , count๋ฅผ 1 ์ถ๊ฐํด์ค๋ค.
์ด ๋ก์ง์ ํ๊ฐ ๋ค ๋น์ธ๋๊น์ง ๋ฐ๋ณตํ๊ณ , ๊ฒฐ๊ณผ ๋ฐฐ์ด ์ค ์ต์๊ฐ์ ์ป์ด๋ด๋ฉด ์ต์ํ์ ๋จ๊ณ๋ฅผ ์ป์ ์ ์๋ค.
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ] ํ๋ ์ฆ4๋ธ๋ก (level2, python) (1) | 2022.09.13 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ํผ๋ก๋ (level2, python) (0) | 2022.09.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฃผ์๊ฐ๊ฒฉ (level2, python) (1) | 2022.09.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๋งต๊ฒ (level2, python) (0) | 2022.09.12 |
[ํ๋ก๊ทธ๋๋จธ์ค] [3์ฐจ] ์์ถ (level2, python) (0) | 2022.09.12 |