ํฐ์คํ ๋ฆฌ ๋ทฐ
๐จ๐ป ์ฝ๋ฉํ
์คํธ/ํ๋ก๊ทธ๋๋จธ์ค
ํ๋ก๊ทธ๋๋จธ์ค: ๋จ์ด ๋ณํ
dirmathfl 2020. 8. 31. 17:47728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
ํน์ ๋จ์ด๊ฐ ์ฃผ์ด์ง ๋, ๋ค๋ฅธ ๋จ์ด์ ๋น๊ตํ์ฌ ํ๋๋ง ๋ค๋ฅธ ๊ฒฝ์ฐ์ ๊ทธ ๋จ์ด๋ก ๋ณํํ ์ ์๋ค. DSF๋ฅผ ํตํด ์ฒ์ ์์ํ๋ ๋ฌธ์๋ถํฐ, ๋ณํ ํ ์ ์๋ ๋ฌธ์์ ๋น๊ตํ์ฌ ๋ ๋ฌธ์๊ฐ ํ๋๋ง ๋ค๋ฅธ ๊ฒฝ์ฐ ํด๋น ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ํ ์ ์๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. ์ด๋ฅผ ์ํด `stack`์ ์ด์ฉํ๊ณ , ์ค๋ณต์ ๋ง๊ธฐ ์ํด `defualtdict`๋ฅผ ํ์ฉํ์ฌ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ์๋ค.
์ฝ๋
from collections import defaultdict
def solution(begin, target, words):
answer = 0
stack = [begin]
visited = defaultdict(bool)
if target not in words:
return answer
while stack:
cur_word = stack.pop()
if cur_word == target:
break
for next_word in words:
diff_cnt = 0
if visited[next_word]:
continue
for c, n in zip(cur_word, next_word):
if c != n:
diff_cnt += 1
if diff_cnt > 1:
break
else:
visited[next_word] = True
stack.append(next_word)
answer += 1
return answer
๋ณํ ๊ฐ๋ฅํ ๋ชจ๋ ๋จ์ด๋ฅผ stack์ ์ถ๊ฐํ๋ฉด, ํ๋ฒ์ ์๋๊ฐ ๋๋ ๊ฒ์ด๋ฏ๋ก answer += 1์ ํด์ค๋ค. stack์ ๋จ์ด๊ฐ target๊ณผ ๊ฐ๋ค๋ฉด, ๋ ์ด์ ํ์์ ์งํํ ํ์๊ฐ ์๋ค.
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: ํ๊ฒ ๋๋ฒ (0) | 2020.08.31 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ๋คํธ์ํฌ (0) | 2020.08.31 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ฌํ ๊ฒฝ๋ก (0) | 2020.08.31 |
ํ๋ก๊ทธ๋๋จธ์ค: ์์ฅ (0) | 2020.06.10 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2020.06.09 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ