2021. 4. 25. 14:47ใ๐ฑ Algorithm/Else
์ ๋ฆฌ
1. ๊ธ์ ํ๋๋ง ์ฐจ์ด๋๋ ๋จ์ด๋ฅผ ์ฐพ์ ๋ฆฌ์คํธ์ append (์ฝ๋ ์์ฑ)
2. ์ ํ์ฌํญ์์ ๋ฐ์ดํฐ์ ๊ธธ์ด๊ฐ ๊ธธ์ง ์์ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์๊ฐ๋ณต์ก๋๊ฐ ์กฐ๊ธ ๋์์ ธ๋ ํต๊ณผํ ์ ์์ผ๋ฏ๋ก ์ผ์ค ๋ฐ๋ณต๋ฌธ๋ try ํด๋ด๋ ๋๋ค.
- queue๋ฅผ ๋งค๋ฒ ์ ๋ฐ์ดํธ ํด์ค์ผํ๋ค.
- ์๋ํ๋ฉด, ์ด๋ค ๋จ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ๊ด๋ ๋จ์ด๋ฅผ ์ฐพ์ ๋๋ง๋ค queue๊ฐ ๋งค๋ฒ ๋ฌ๋ผ์ง ๊ฒ์.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ ์ฐ๊ด ๋จ์ด๋ฅผ ๋ด์ temp_q๋ฅผ ๋ง๋ค์ด iter๋ง๋ค ์ด๊ธฐํ ํด์ค์ผํ๋ค. => ๋ ๊ทธ ์ด๊ธฐํ ์์ ์ด ์๋ค.
์ฃผ์ํ ์
1. ์ด๋ค ๋จ์ด์ ํ ๊ธ์๋ง ์ฐจ์ด๋๋ ๋จ์ด๊ฐ ๊ผญ ํ๋๋ ๋ฒ์ ์๋ค. -> ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ๊ฐ ๋ถ๋ช ์กด์ฌํจ์ ์ธ์ง
2. tmp_q (์์ queue)์ ํ์์ฑ์ ์ธ์งํ ๊ฒ
์คํจํ ํ์ด
๋ง์ง๋ง ํ ์คํธ์ผ์ด์ค์์ ์คํจ, ๋ชจ๊ฐ ๋ฌธ์ ์ธ์ง ์์ง ๋ชจ๋ฅด๊ฒ ๋ค.
def solution(begin, target, words):
queue = [begin]
answer = 0
while queue:
tmp_q = []
curr = queue.pop(0)
if curr == target:
return answer
for i in range(len(words) - 1, -1, -1):
temp = [1 for a, b in zip(curr, words[i]) if a != b]
if sum(temp) == 1:
tmp_q.append(words.pop(i))
answer += 1
queue = tmp_q
if not words:
return 0
ํต๊ณผํ ์ฝ๋ (๋ค๋ฅธ ์ฌ๋ ํ์ด)
- ์ฌ์ค ์ด ํ์ด๋ O(n^3) ์ด๊ธฐ ๋๋ฌธ์ ๋ณ๋ก ๋ดํค์ง ์์๋๋ฐ, ์ ํ ์ฌํญ์์ words์ ๊ธธ์ด๊ฐ ์ต๋์ผ ๊ฒฝ์ฐ๊ฐ 50 ์ด๊ธฐ์ ์ผ์ค ๋ฐ๋ณต๋ฌธ๋ ๊ด์ฐฎ๋ค.
def solution(begin, target, words):
answer = 0
queue = [begin]
while queue:
tmp_q = []
for word1 in queue:
if word1 == target:
return answer
for word2_idx in range(len(words)-1, -1, -1):
word2 = words[word2_idx]
difference = sum([x != y for x, y in zip(word1, word2)])
if difference == 1:
tmp_q.append(words.pop(word2_idx))
if not tmp_q:
return 0
queue = tmp_q
answer += 1
- ๋ ๋ฒ์งธ for๋ฌธ์์ range()๋ด๋ถ ์ธ์๋ฅผ ์ฐจ๊ฐ์์ผ๋ก ์์ฑํ์๋๋ฐ, ์ด๋ ๊ฒ ํ ์ด์ ๋ for๋ฌธ ๋ด๋ถ์์ words๋ฅผ pop()ํ ๋, indexError๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํจ์ด๋ค.
- word2_idx๋ words ๋ฆฌ์คํธ์ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ถํฐ ์ฒซ ์ธ๋ฑ์ค๋ก ์ฐจ๊ฐ๋๊ธฐ ๋๋ฌธ์, words.pop(word2_idx)๋ฅผ ํ ๋ ๋ค์์ ๋ถํฐ pop() ํ ์ ์๋ค. (์ธ๋ฑ์ค๊ฐ ๊ผฌ์ผ ์ํ X)
'๐ฑ Algorithm > Else' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ ํ์ด์ฌ (0) | 2021.05.15 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๊ดํธ๋ณํ ํ์ด์ฌ (0) | 2021.04.25 |
ํ๋ก๊ทธ๋๋จธ์ค [lv3] ๋คํธ์ํฌ ํ์ด์ฌ (0) | 2021.04.25 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ์คํ์ฑํ ๋ฐฉ ํ์ด์ฌ (0) | 2021.04.25 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ํ๊ฒ๋๋ฒ ํ์ด์ฌ (0) | 2021.04.05 |