# λμΆ© λ§λ μν # 160586 # lv1 # Python
# λ¬Έμ
ν΄λν°μ μνμ μ»΄ν¨ν° ν€λ³΄λ μνκ³Όλ λ€λ₯΄κ² νλμ ν€μ μ¬λ¬ κ°μ λ¬Έμκ° ν λΉλ μ μμ΅λλ€. ν€ νλμ μ¬λ¬ λ¬Έμκ° ν λΉλ κ²½μ°, λμΌν ν€λ₯Ό μ°μν΄μ λΉ λ₯΄κ² λλ₯΄λ©΄ ν λΉλ μμλλ‘ λ¬Έμκ° λ°λλλ€.
μλ₯Ό λ€μ΄, 1λ² ν€μ "A", "B", "C" μμλλ‘ λ¬Έμκ° ν λΉλμ΄ μλ€λ©΄ 1λ² ν€λ₯Ό ν λ² λλ₯΄λ©΄ "A", λ λ² λλ₯΄λ©΄ "B", μΈ λ² λλ₯΄λ©΄ "C"κ° λλ μμ λλ€.
κ°μ κ·μΉμ μ μ©ν΄ μ무λ κ²λ λ§λ ν΄λν° μνμ΄ μμ΅λλ€. μ΄ ν΄λν° μνμ ν€μ κ°μκ° 1κ°λΆν° μ΅λ 100κ°κΉμ§ μμ μ μμΌλ©°, νΉμ ν€λ₯Ό λλ μ λ μ λ ₯λλ λ¬Έμλ€λ 무μμλ‘ λ°°μ΄λμ΄ μμ΅λλ€. λ, κ°μ λ¬Έμκ° μν μ 체μ μ¬λ¬ λ² ν λΉλ κ²½μ°λ μκ³ , ν€ νλμ κ°μ λ¬Έμκ° μ¬λ¬ λ² ν λΉλ κ²½μ°λ μμ΅λλ€. μ¬μ§μ΄ μμ ν λΉλμ§ μμ κ²½μ°λ μμ΅λλ€. λ°λΌμ λͺλͺ λ¬Έμμ΄μ μμ±ν μ μμ μλ μμ΅λλ€.
μ΄ ν΄λν° μνμ μ΄μ©ν΄ νΉμ λ¬Έμμ΄μ μμ±ν λ, ν€λ₯Ό μ΅μ λͺ λ² λλ¬μΌ κ·Έ λ¬Έμμ΄μ μμ±ν μ μλμ§ μμλ³΄κ³ μ ν©λλ€.
1λ² ν€λΆν° μ°¨λ‘λλ‘ ν λΉλ λ¬Έμλ€μ΄ μμλλ‘ λ΄κΈ΄ λ¬Έμμ΄λ°°μ΄ keymapκ³Ό μ λ ₯νλ €λ λ¬Έμμ΄λ€μ΄ λ΄κΈ΄ λ¬Έμμ΄ λ°°μ΄ targetsκ° μ£Όμ΄μ§ λ, κ° λ¬Έμμ΄μ μμ±νκΈ° μν΄ ν€λ₯Ό μ΅μ λͺ λ²μ© λλ¬μΌ νλμ§ μμλλ‘ λ°°μ΄μ λ΄μ return νλ solution ν¨μλ₯Ό μμ±ν΄ μ£ΌμΈμ.
λ¨, λͺ©ν λ¬Έμμ΄μ μμ±ν μ μμ λλ -1μ μ μ₯ν©λλ€.
# μ νμ¬ν
- 1 ≤ keymapμ κΈΈμ΄ ≤ 100
- 1 ≤ keymapμ μμμ κΈΈμ΄ ≤ 100
- keymap[i]λ i + 1λ² ν€λ₯Ό λλ μ λ μμλλ‘ λ°λλ λ¬Έμλ₯Ό μλ―Έν©λλ€.
- μλ₯Ό λ€μ΄ keymap[0] = "ABACD" μΈ κ²½μ° 1λ² ν€λ₯Ό ν λ² λλ₯΄λ©΄ A, λ λ² λλ₯΄λ©΄ B, μΈ λ² λλ₯΄λ©΄ A κ° λ©λλ€.
- keymapμ μμμ κΈΈμ΄λ μλ‘ λ€λ₯Ό μ μμ΅λλ€.
- keymapμ μμλ μνλ²³ λλ¬Έμλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
- 1 ≤ targetsμ κΈΈμ΄ ≤ 100
- 1 ≤ targetsμ μμμ κΈΈμ΄ ≤ 100
- targetsμ μμλ μνλ²³ λλ¬Έμλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
# νμ΄
def solution(keymap, targets):
# <μμ΄λμ΄>
# λΉ λμ
λ리λ₯Ό μμ±. (keymapμ λν κ°λ€μ λ¨Όμ μ μ₯ν¨. {'λ¬Έμ' : μΈλ±μ€ + 1, 'λ¬Έμ' : μΈλ±μ€ + 1}
# λμ
λ리 λ΄λΆμ target κ°μ΄ μμΌλ©΄ ν΄λΉ value(μΈλ±μ€ + 1) κ°μ κ³μν΄μ λν¨.
# valueλ₯Ό λν κ°μ return_listμ appendνκ³ μ΅μ’
return
dic1 = {}
return_list = []
for key in keymap:
for i in range(len(key)):
if key[i] in dic1.keys(): # λ§μ½ dic1μ μ΄λ―Έ key[i] κ°μ λν valueκ° μλ€λ©΄,
dic1[key[i]] = min(dic1[key[i]], i + 1) # μ΅μκ°μ ν λΉ.
else:
dic1[key[i]] = i + 1
for target in targets:
total = 0
for word in target:
if word in dic1.keys(): # λ§μ½ dic1.keys()μ word κ° μλ€λ©΄,
total += dic1[word] # ν΄λΉ keyμ value κ°μ total μ λμ ν©.
else:
total = -1 # μμΌλ©΄ total = -1, break..
break
return_list.append(total) # μ΅μ’
λμ¨ μΈλ±μ€ κ°λ€μ ν©μ return_listμ append
return return_list