Tiny Bunny [Python] λŒ€μΆ© λ§Œλ“  자판
λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
programmers/Lv.1

[Python] λŒ€μΆ© λ§Œλ“  자판

by maesil 2025. 4. 19.

문제 μ„€λͺ…

 

νœ΄λŒ€ν°μ˜ μžνŒμ€ 컴퓨터 ν‚€λ³΄λ“œ μžνŒκ³ΌλŠ” λ‹€λ₯΄κ²Œ ν•˜λ‚˜μ˜ 킀에 μ—¬λŸ¬ 개의 λ¬Έμžκ°€ 할당될 수 μžˆμŠ΅λ‹ˆλ‹€. ν‚€ ν•˜λ‚˜μ— μ—¬λŸ¬ λ¬Έμžκ°€ ν• λ‹Ήλœ 경우, λ™μΌν•œ ν‚€λ₯Ό μ—°μ†ν•΄μ„œ λΉ λ₯΄κ²Œ λˆ„λ₯΄λ©΄ ν• λ‹Ήλœ μˆœμ„œλŒ€λ‘œ λ¬Έμžκ°€ λ°”λ€λ‹ˆλ‹€.


예λ₯Ό λ“€μ–΄, 1번 ν‚€μ— "A", "B", "C" μˆœμ„œλŒ€λ‘œ λ¬Έμžκ°€ ν• λ‹Ήλ˜μ–΄ μžˆλ‹€λ©΄ 1번 ν‚€λ₯Ό ν•œ λ²ˆ λˆ„λ₯΄λ©΄ "A", λ‘ λ²ˆ λˆ„λ₯΄λ©΄ "B", μ„Έ λ²ˆ λˆ„λ₯΄λ©΄ "C"κ°€ λ˜λŠ” μ‹μž…λ‹ˆλ‹€.

같은 κ·œμΉ™μ„ μ μš©ν•΄ μ•„λ¬΄λ ‡κ²Œλ‚˜ λ§Œλ“  νœ΄λŒ€ν° μžνŒμ΄ μžˆμŠ΅λ‹ˆλ‹€. μ΄ νœ΄λŒ€ν° μžνŒμ€ ν‚€μ˜ κ°œμˆ˜κ°€ 1κ°œλΆ€ν„° μ΅œλŒ€ 100κ°œκΉŒμ§€ μžˆμ„ μˆ˜ μžˆμœΌλ©°, νŠΉμ • ν‚€λ₯Ό λˆŒλ €μ„ λ•Œ μž…λ ₯λ˜λŠ” λ¬Έμžλ“€λ„ λ¬΄μž‘μœ„λ‘œ λ°°μ—΄λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ˜, κ°™μ€ λ¬Έμžκ°€ μžνŒ μ „체에 μ—¬λŸ¬ λ²ˆ ν• λ‹Ήλœ κ²½μš°λ„ μžˆκ³ , ν‚€ ν•˜λ‚˜μ— κ°™μ€ λ¬Έμžκ°€ μ—¬λŸ¬ λ²ˆ ν• λ‹Ήλœ κ²½μš°λ„ μžˆμŠ΅λ‹ˆλ‹€. μ‹¬μ§€μ–΄ μ•„μ˜ˆ ν• λ‹Ήλ˜μ§€ μ•Šμ€ κ²½μš°λ„ μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λͺ‡λͺ‡ λ¬Έμžμ—΄μ€ μž‘μ„±ν•  μˆ˜ μ—†μ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

이 νœ΄λŒ€ν° μžνŒμ„ μ΄μš©ν•΄ νŠΉμ • λ¬Έμžμ—΄μ„ μž‘μ„±ν•  λ•Œ, ν‚€λ₯Ό μ΅œμ†Œ λͺ‡ λ²ˆ λˆŒλŸ¬μ•Ό κ·Έ λ¬Έμžμ—΄μ„ μž‘μ„±ν•  μˆ˜ μžˆλŠ”μ§€ μ•Œμ•„λ³΄κ³ μž ν•©λ‹ˆλ‹€.

1번 ν‚€λΆ€ν„° μ°¨λ‘€λŒ€λ‘œ ν• λ‹Ήλœ λ¬Έμžλ“€μ΄ μˆœμ„œλŒ€λ‘œ λ‹΄κΈ΄ λ¬Έμžμ—΄λ°°μ—΄ keymapκ³Ό μž…λ ₯ν•˜λ €λŠ” λ¬Έμžμ—΄λ“€μ΄ λ‹΄κΈ΄ λ¬Έμžμ—΄ λ°°μ—΄ targetsκ°€ μ£Όμ–΄μ§ˆ λ•Œ, κ° λ¬Έμžμ—΄μ„ μž‘μ„±ν•˜κΈ° μœ„ν•΄ ν‚€λ₯Ό μ΅œμ†Œ λͺ‡ λ²ˆμ”© λˆŒλŸ¬μ•Ό ν•˜λŠ”μ§€ μˆœμ„œλŒ€λ‘œ λ°°μ—΄μ— λ‹΄μ•„ return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄ μ£Όμ„Έμš”.

단, λͺ©ν‘œ λ¬Έμžμ—΄μ„ μž‘μ„±ν•  μˆ˜ μ—†μ„ λ•ŒλŠ” -1을 μ €μž₯ν•©λ‹ˆλ‹€.

 

 

μž…μΆœλ ₯ 예

keymap targets result
["ABACD", "BCEFD"] ["ABCD","AABB"] [9, 4]
["AA"] ["B"] [-1]
["AGZ", "BSSS"] ["ASA","BGZ"] [4, 6]

 

 

제좜 λ‚΄μ—­

def solution(keymap, targets):
    dic = {}
    answer = []
    
    for i in range(len(keymap)):
        for j in range(len(keymap[i])):
            alpha = keymap[i][j]
            if alpha not in dic:
                dic[alpha] = set()
            dic[alpha].add(j+1)
            
    for ch in targets:
        count = 0
        for k in ch:
            if k in dic:
                count += min(dic[k])
            else:
                count = -1
                break
        answer.append(count)
    return answer

 

keymap을 μˆœνšŒν•˜λ©΄μ„œ λ”•μ…”λ„ˆλ¦¬μ— ν•΄λ‹Ή μ•ŒνŒŒλ²³μ΄ μ—†μœΌλ©΄ set 생성

dic[문자] = {λˆŒλŸ¬μ•Ό ν•˜λŠ” 횟수}

targets을 μˆœνšŒν•˜λ©΄μ„œ dic에 ν•΄λ‹Ή λ¬Έμžκ°€ 있으면 count에 μ΅œμ†Ÿκ°’μ„ 더함

값이 μ—†μœΌλ©΄ countλ₯Ό -1둜 μ„€μ •ν•˜κ³  break

answer 배열에 count κ°’ μΆ”κ°€

 

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ > μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ > μ—°μŠ΅λ¬Έμ œ

https://school.programmers.co.kr/learn/courses/30/lessons/160586

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

SW개발자λ₯Ό μœ„ν•œ 평가, ꡐ윑, μ±„μš©κΉŒμ§€ Total Solution을 μ œκ³΅ν•˜λŠ” 개발자 μ„±μž₯을 μœ„ν•œ λ² μ΄μŠ€μΊ ν”„

programmers.co.kr

 

'programmers > Lv.1' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Python] 숫자 짝꿍  (0) 2025.04.21
[Python] 햄버거 λ§Œλ“€κΈ°  (0) 2025.04.19
[Python] λ‘˜λ§Œμ˜ μ•”ν˜Έ  (0) 2025.04.19
[Python] λ¬Έμžμ—΄ λ‚˜λˆ„κΈ°  (0) 2025.04.19
[Python] μ˜Ήμ•Œμ΄ (2)  (0) 2025.04.16