728x90
๋ฐ์ํ
"""
ํด๋ํฐ์ ์ํ์ ์ปดํจํฐ ํค๋ณด๋ ์ํ๊ณผ๋ ๋ค๋ฅด๊ฒ
ํ๋์ ํค์ ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๊ฐ ํ ๋น๋ ์ ์์ต๋๋ค.
ํค ํ๋์ ์ฌ๋ฌ ๋ฌธ์๊ฐ ํ ๋น๋ ๊ฒฝ์ฐ, ๋์ผํ ํค๋ฅผ ์ฐ์ํด์ ๋น ๋ฅด๊ฒ ๋๋ฅด๋ฉด
ํ ๋น๋ ์์๋๋ก ๋ฌธ์๊ฐ ๋ฐ๋๋๋ค.
์๋ฅผ ๋ค์ด, 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
๋ฐ์ํ
๋๊ธ