๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐˜ผ๐™ก๐™œ๐™ค๐™ง๐™ž๐™ฉ๐™๐™ข/๐™‹๐™ง๐™ค๐™œ๐™ง๐™–๐™ข๐™ข๐™š๐™ง๐™จ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค '๋Œ€์ถฉ ๋งŒ๋“  ์žํŒ' ํŒŒ์ด์ฌ ํ’€์ด

by beomcoder 2023. 2. 24.
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
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€