βοΈ λ¬Έμ
https://school.programmers.co.kr/learn/courses/30/lessons/84512
μ¬μ μ μνλ²³ λͺ¨μ 'A', 'E', 'I', 'O', 'U'λ§μ μ¬μ©νμ¬ λ§λ€ μ μλ, κΈΈμ΄ 5 μ΄νμ λͺ¨λ λ¨μ΄κ° μλ‘λμ΄ μμ΅λλ€. μ¬μ μμ 첫 λ²μ§Έ λ¨μ΄λ "A"μ΄κ³ , κ·Έλ€μμ "AA"μ΄λ©°, λ§μ§λ§ λ¨μ΄λ "UUUUU"μ λλ€. λ¨μ΄ νλ wordκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μ΄ λ¨μ΄κ° μ¬μ μμ λͺ λ²μ§Έ λ¨μ΄μΈμ§ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- wordμ κΈΈμ΄λ 1 μ΄μ 5 μ΄νμ λλ€.
- wordλ μνλ²³ λλ¬Έμ 'A', 'E', 'I', 'O', 'U'λ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
π€ μ μΆλ ₯ μμ
π§ λμ΄λ/μμ μκ°
β λμ΄λ: νλ‘κ·Έλλ¨Έμ€ Level.2
β μμ μκ°: 23λΆ 45μ΄
β κΆμ₯ μκ°: 1μκ° 15λΆ
π‘ νμ΄
1) λ¬Έμ μ ν νμ
μμ νμμΌλ‘ ν μ μλ λ¬Έμ λ° μμ νμ λ리λ λ°©λ²λ μ¬λ¬κ°μ§κ° μκΈ° λλ¬Έμ μ΄λ€ λ°©λ²μΌλ‘ νμ§ κ³ λ―Όν΄λ³΄μλ€.
2) μμ΄λμ΄ νλ¦
β μ€λ³΅μμ΄?
첫 λ²μ§Έλ‘ λ μ€λ₯Έ μμ΄λμ΄λ μ€λ³΅μμ΄μ μ°λ κ²μ΄μλ€. κΈΈμ΄ 1~5κΉμ§ κ°λ₯ν λͺ¨λ λ¨μ΄λ₯Ό λ§λ€κ³ μ λ ¬ν΄μ€ λ€ μ£Όμ΄μ§ λ¨μ΄ wordμ μΈλ±μ€+1μ μΆλ ₯ν΄μ£Όλ©΄ λλλ λ°©λ²μ΄λ€. νμ΄μ¬μμ μ 곡νλ itertools.product(~)λ₯Ό μ¬μ©νλ©΄ μ€λ³΅μμ΄μ μ½κ² ꡬνν μ μλ€.
λ¨μ΄ κΈΈμ΄κ° μ΅λ 5μ΄κ³ λͺ¨μ 5κ°λ§ νμ©νλ λ¬Έμ λΌ μ€λ³΅μμ΄λ‘λ 무λνκ² ν΅κ³Όλ κ² κ°λ€. νμ§λ§ νμ΄μ¬ λ΄μ₯ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ°μ§ μκ³ μ§μ ꡬνν΄μ λ¬Έμ λ₯Ό νκ³ μΆμκΈ° λλ¬Έμ μ΄ λ°©λ²μ μΌλ¨ PASS!
β‘ BFS? DFS?
κ·Έ λ€μμΌλ‘ λ μ¬λ¦° λ°©λ²μ λνμ μΈ μμ νμ λ°©λ²μΈ BFSμ DFSλ€. λ΄κ° μμ μ΅μ λ°©μμ΄ BFSλΌ BFS λ°©μμΌλ‘ νμ΄λ³΄κΈ°λ‘ νλ€.
β’ BFS κΈ°λ³Έ ν ꡬμ
κ°μΈμ μΌλ‘ BFSμ ν΅μ¬μ 'νμ μ μ ν κ°μ λ£μ μ μλμ§/νμμ popν κ°μ μ νμ©ν μ μλμ§'λΌκ³ μκ°νλ€. μ΄ λ κ°μ§λ₯Ό μ κ²½ μ°λ©΄μ μ€λμ λ¬Έμ μ λ§λ BFS κΈ°λ³Έ νμ μκ°ν΄λ΄€λ€.
Step. 1: queue μ΄κΈ°κ° μ€μ
β deque(["A"])
μ²μμλ νμ Aλ§ μΆκ°ν΄λ μνλ‘ whileλ¬Έμ λλ©΄μ μμ νμμ μννλλ° μ΄ κ²½μ° E, I, O, Uλ‘ μμνλ λ¨μ΄κ° μμ λμ¬ μκ° μλ€λ κ±Έ κΉ¨λ¬μλ€.
β deque(["A", "E", "I", "O", "U"])
첫 λ²μ§Έ λ°©λ²μ΄ μλͺ»λμμ κΉ¨λ«κ³ E, I, O, Uλ‘ μμνλ λ¨μ΄λ₯Ό μ΄λ»κ² λ§λ€ μ μμμ§ κ³ λ―Όνλ€κ° ν κΈμ μνλ²³λ§ νμ 미리 μ μ₯ν΄λλ©΄ λκ² κ΅¬λ μΆμλ€. μ΄ λ°©μμ μ¬μ©νλ©΄ νμμ μμλλ‘ popνλ κ³Όμ μ ν΅ν΄ A μ΄μΈμ λͺ¨μ μνλ²³μΌλ‘ μμνλ λ¨μ΄λ μμ°μ€λ½κ² λ§λ€μ΄μ§ μ μλ€.
Step. 2: λ¨μ΄ μ§ν© μ΄κΈ°κ° μ€μ
β λ¨μ΄ μ§ν© = λ°©λ¬Έ μ²λ¦¬μ© 리μ€νΈ μν
BFSλ DFSλ‘ λ¬Έμ λ₯Ό ν λ boolean μλ£νμΌλ‘ μ μλλ λ°©λ¬Έ μ²λ¦¬ 리μ€νΈλ νμμ΄λ€. νμ§λ§ μ λ°©μμ μ΄ λ¬Έμ μμ κ·Έλλ‘ μ¬μ©νκΈ°μλ μ΄λ €μμ΄ μμ΄ λ³΄μκΈ° λλ¬Έμ λ¨μ΄λ₯Ό μ μ₯ν΄λ μ§ν©μ μ μν΄μ€¬λ€.
νμ¬ λ¨μ΄κ° μ΄λ―Έ λ§λ€μ΄μ§ λ¨μ΄μΈμ§ μλμ§ νμΈνλ κ³Όμ μμ 리μ€νΈλ³΄λ€ μ§ν©μ΄ μ’ λ λΉ λ₯΄κ² μ²λ¦¬λμ§ μμκΉ? νλ λ§μμμ set()μ μ¬μ©νλ€.
Step. 3: λ¨μ΄ λ§λ€κΈ°
μ΄μ νμμ μνλ²³μ νλμ© κΊΌλ΄κ³ "AEIOU"λ₯Ό forλ¬Έ λλ©΄μ νμμ κΊΌλΈ μνλ²³μ μ΄μ΄ λΆμ¬μ€λ€. μλ‘κ² λ§λ€μ΄μ§ λ¨μ΄ κΈΈμ΄κ° 5 μ΄νμΌ λλ§ λ¨μ΄ μ§ν©μ μ΄λ―Έ μλ λ¨μ΄μΈμ§ νμΈνκ³ μμ κ²½μ°μλ νμ λ£μ΄ κ³μ νμν΄λκ°λ€.
3) ꡬν
from collections import deque
def solution(word):
answer = 0
queue = deque(["A", "E", "I", "O", "U"])
word_set = set()
for char in "AEIOU":
word_set.add(char)
while queue:
curr_word = queue.popleft()
for char in "AEIOU":
make_word = curr_word+char
if len(make_word) <= 5:
if make_word not in word_set:
word_set.add(make_word)
queue.append(make_word)
word_list = sorted(list(word_set))
return word_list.index(word)+1
4) μ΄λ €μ λ μ /λ°°μ΄ μ
π¨ μ΄λ €μ λ μ
- μμ
β λ°°μ΄ μ
- BFS/DFS λ¬Έμ νμ΄λ₯Ό ν λ λ°©λ¬Έ μ²λ¦¬λ 무쑰건 boolν 리μ€νΈμΌ! μ΄κ² μλλΌ λ¬Έμ μν©μ λ§κ² λ°©λ¬Έ μ²λ¦¬ μν μ μνν μ μλ 리μ€νΈλ₯Ό μ€μ€λ‘ μ μνλ κ²λ μ€μνλ€.
'Problem Solving > [νν΄99] TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
99ν΄λ½ μ½ν μ€ν°λ 9μΌμ°¨ TIL / BFS(λλΉ μ°μ νμ) (0) | 2024.11.06 |
---|---|
99ν΄λ½ μ½ν μ€ν°λ 8μΌμ°¨ TIL / DFS(κΉμ΄ μ°μ νμ) (0) | 2024.11.04 |
99ν΄λ½ μ½ν μ€ν°λ 6μΌμ°¨ TIL / μ΄λΆ νμ (0) | 2024.11.03 |
99ν΄λ½ μ½ν μ€ν°λ 5μΌμ°¨ TIL / BFS(λλΉ μ°μ νμ) (0) | 2024.11.02 |
99ν΄λ½ μ½ν μ€ν°λ 4μΌμ°¨ TIL / DFS(κΉμ΄ μ°μ νμ) (0) | 2024.10.31 |