κ°λ°/ππ§π€ππ§ππ’π’ππ§π¨
νλ‘κ·Έλλ¨Έμ€ 'λμΆ© λ§λ μν' νμ΄μ¬ νμ΄
beomcoder
2023. 2. 24. 23:52
728x90
λ°μν
νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ λ§€μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
programmers.co.kr
"""
ν΄λν°μ μνμ μ»΄ν¨ν° ν€λ³΄λ μνκ³Όλ λ€λ₯΄κ²
νλμ ν€μ μ¬λ¬ κ°μ λ¬Έμκ° ν λΉλ μ μμ΅λλ€.
ν€ νλμ μ¬λ¬ λ¬Έμκ° ν λΉλ κ²½μ°, λμΌν ν€λ₯Ό μ°μν΄μ λΉ λ₯΄κ² λλ₯΄λ©΄
ν λΉλ μμλλ‘ λ¬Έμκ° λ°λλλ€.
μλ₯Ό λ€μ΄, 1λ² ν€μ "A", "B", "C" μμλλ‘ λ¬Έμκ° ν λΉλμ΄ μλ€λ©΄
1λ² ν€λ₯Ό ν λ² λλ₯΄λ©΄ "A", λ λ² λλ₯΄λ©΄ "B", μΈ λ² λλ₯΄λ©΄ "C"κ° λλ μμ
λλ€.
(μ€λ΅)
"""
def solution(keymap, targets):
answer = []
kv = {}
for keys in keymap:
for index, key in enumerate(keys):
if key in kv.keys():
kv[key] = min(index+1, kv[key])
else:
kv[key] = index+1
for target in targets:
try:
answer.append(sum([kv[key] for key in target]))
except:
answer.append(-1)
return answer
"""
- 15 line
κ° μνλ²³μ μ΅μλ‘ λλ₯Έ νμλ₯Ό μ μ₯νκΈ° μν΄
kv (key, value)λΌκ³ dictλ₯Ό λ§λ€μλ€.
- 16 line
dictμ λ£κΈ° μν΄ keymapμμ λ¬Έμμ΄μ νλμ© κ°μ§κ³ μ¨λ€.
- 17 line
λ¬Έμμ΄μμ νλμ© λ¬Έμλ₯Ό κ°μ§κ³ μ€λλ°,
index+1λ²λ§νΌ λλ¬μΌ νκΈ°λλ¬Έμ enumerateλ‘ λ¬ΈμμμΉλ 체ν¬νλ€.
- 18~21 line
λ§μ½ kvμ λ¬Έμ(key)μ κ°(index+1)μ΄ λ€μ΄κ° μλ€λ©΄
κΈ°μ‘΄μ λ€μ΄μλ κ°κ³Ό μ§κΈ κ°μ λΉκ΅νμ¬ λ μμκ°μ λ€μ λ¬Έμμ κ°μΌλ‘ μ§μ νλ€.
λ€μ΄κ°μμ§ μλ€λ©΄ νμ¬ κ°μ μ
λ ₯νλ€.
- 23~ line
μ΄μ targetsμ λ¬Έμμ΄μ κ°μ§κ³ μ€λ©΄μ answerμ κ°μ μΆκ°μμΌμ€λ€.
λ¨Όμ targetλ¬Έμμ΄μμ λ¬Έμ νλμ©μ μ½μ΄μμ kvμμ λ¬Έμμ ν΄λΉνλ κ°μ μΆκ°μν¨λ€.
μλ₯Ό λ€μ΄μ kv = {'A': 1, 'B': 2} μ΄κ³ targetλ¬Έμμ΄μ΄ 'AB'μ΄λΌλ©΄
[kv[key] for key in target]μ [1, 2]κ° λλ€. μ΄κ°μ sumνλ©΄ ABμ μ
λ ₯κ°μ΄ λλ€.
κ·Όλ° λ§μ½μ kvμ κ°μ΄ μ
λ ₯λμ΄μμ§ μλ λ¬ΈμλΌλ©΄ try, exceptλ¬Έμμ κ±Έλ¬μ§κ² λλ€.
κ·ΈλΌ -1μ μ
λ ₯νλ€.
μ¬λ΄μΌλ‘ μ νμ¬νμ΄ λ무 μ΄μν κ² κ°λ€.
κ·Έλμ μ§λ¬ΈμΌλ‘ λ¨κ²¨λμλλ° λ΅λ³μ΄ μμΌλ©΄ μ’κ² λ€.
https://school.programmers.co.kr/questions/44822
"""
728x90
λ°μν