Algorithm Problem/Python

[python] SWEA - 4261. λΉ λ₯Έ νœ΄λŒ€μ „ν™” ν‚€νŒ¨λ“œ

deo2kim 2020. 8. 17. 08:51
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

1. D5 | 이게 μ™œ D5?

2. ν‚€νŒ¨λ“œ λ¦¬μŠ€νŠΈλ‚˜ λ”•μ…”λ„ˆλ¦¬λ₯Ό λ§Œλ“ λ‹€.

3. 각각의 단어듀을 ν•œκΈ€μž ν•œκΈ€μž μ²΄ν¬ν•œλ‹€.

4. 단어 μ•ˆμ˜ ν•œκΈ€μžκ°€ λˆ„λ₯Έ ν‚€νŒ¨λ“œμ˜ 문자 μ•ˆμ— ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄ 체크λ₯Ό λ©ˆμΆ”κ³ 

5. λͺ¨λ‘ ν†΅κ³Όν•˜λ©΄ 카운트λ₯Ό μ„Έμ–΄μ€€λ‹€.

 

πŸ’¨ D5λΌμ„œ μž¬κ·€ν•¨μˆ˜λ₯Ό 톡해 κ°€λŠ₯ν•œ λͺ¨λ“  단어λ₯Ό κ΅¬ν•˜κ³  포함관계λ₯Ό κ΅¬ν•΄μ€¬λŠ”λ° ν‹€λ Έλ‹€. ν˜Ήμ‹œλ‚˜ ν•΄μ„œ λ‹¨μˆœν•˜κ²Œ μ ‘κ·Όν–ˆλ”λ‹ˆ μ‰½κ²Œ ν’€λ Έλ‹€. D5κ°€ μ•„λ‹Œκ±° κ°™λ‹€...

 

πŸ’»μ†ŒμŠ€ μ½”λ“œ

 keypad = {
    '2': ['a', 'b', 'c'],
    '3': ['d', 'e', 'f'],
    '4': ['g', 'h', 'i'],
    '5': ['j', 'k', 'l'],
    '6': ['m', 'n', 'o'],
    '7': ['p', 'q', 'r', 's'],
    '8': ['t', 'u', 'v'],
    '9': ['w', 'x', 'y', 'z'],
}

for tc in range(1, 1 + int(input())):
    s, n = input().split()
    words = input().split()
    
    cnt = 0
    for word in words:
        for i in range(len(word)):
            if word[i] not in keypad[s[i]]:
                break
        else:
            cnt += 1

    print('#{} {}'.format(tc, cnt))

 

πŸ“•λ¬Έμ œ 확인

좜처: SW Expert Academy

링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWLL7kaaAPsDFAUW&categoryId=AWLL7kaaAPsDFAUW&categoryType=CODE

 

SW Expert Academy

SW ν”„λ‘œκ·Έλž˜λ° μ—­λŸ‰ 강화에 도움이 λ˜λŠ” λ‹€μ–‘ν•œ ν•™μŠ΅ 컨텐츠λ₯Ό ν™•μΈν•˜μ„Έμš”!

swexpertacademy.com

λ™ν•œμ΄λŠ” μ°½κ³ μ—μ„œ 였래된 μ• λ‹ˆμ½œ νœ΄λŒ€μ „ν™”λ₯Ό λ°œκ²¬ν–ˆλ‹€.

이 νœ΄λŒ€μ „ν™”μ˜ ν‚€νŒ¨λ“œλŠ” μ•„λž˜μ™€ 같이 생겼닀.



이 ν‚€νŒ¨λ“œλŠ” 각 ν‚€λ₯Ό μ—¬λŸ¬ 번 눌러 μ˜λ¬Έμ„ μž…λ ₯ν•  수 μžˆλŠ”λ°, aλ₯Ό μž…λ ₯ν•˜λ €λ©΄ 2λ₯Ό ν•œ 번, bλ₯Ό μž…λ ₯ν•˜λ €λ©΄ 2λ₯Ό 두 번 λˆ„λ₯΄λŠ” 식이닀.

κ·ΈλŸ¬λ‚˜ λ™ν•œμ΄λŠ” 이 방식이 λ„ˆλ¬΄ λŠλ¦¬λ‹€κ³  μƒκ°ν•˜μ—¬ λ¬Έμžμ—΄μ„ λΉ λ₯΄κ²Œ 타이핑할 수 μžˆλ„λ‘ ν‚€νŒ¨λ“œλ₯Ό λ‹€μŒκ³Ό 같이 λ°”κΏ” 보렀고 ν•œλ‹€.

μ‚¬μš©ν•  단어듀을 미리 νœ΄λŒ€ν°μ— μ €μž₯ν•œ λ’€, ν•΄λ‹Ή μ•ŒνŒŒλ²³μ΄ μ¨μžˆλŠ” 숫자λ₯Ό ν•œ λ²ˆμ”©λ§Œ λˆ„λ₯΄λ©΄ κ°€λŠ₯ν•œ μ—¬λŸ¬ 단어 쀑에 사전에 μ €μž₯된 단어λ₯Ό μ°Ύμ•„μ„œ μž…λ ₯ν•˜λŠ” 것이닀.

예λ₯Ό λ“€λ©΄ carλ₯Ό μž…λ ₯ν•˜λ €λ©΄ 222, 2, 777을 μž…λ ₯ν•˜λŠ” 것이 μ •μƒμ΄μ§€λ§Œ 이 자판의 경우 227을 μž…λ ₯ν•˜λ©΄ aap, aaq, …, ccs λ“± 3×3×4=36개의 단어 쀑에 사전에 μ‘΄μž¬ν•˜λŠ” 단어λ₯Ό 좜λ ₯ν•΄μ€€λ‹€.

ν•˜μ§€λ§Œ λ™ν•œμ΄λŠ” 이 μ‹œμŠ€ν…œμ˜ λ¬Έμ œμ μ„ λ°œκ²¬ν•˜μ˜€λ‹€. 이 μ˜ˆμ‹œμ˜ 경우 carλŠ” capκ³Ό ν‘œν˜„μ΄ κ²ΉμΉœλ‹€λŠ” 점을 확인할 수 μžˆλŠ”λ°,

이처럼 ν‚€ μž…λ ₯이 λ™μΌν•œ 단어가 μ—¬λŸΏ μ‘΄μž¬ν•  수 μžˆλ‹€λŠ” 것이닀.

λ™ν•œμ΄λŠ” μ–Όλ§ˆλ‚˜ 이런 κ²½μš°κ°€ 자주 λ°œμƒλ˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄, 사전과 ν‚€ μž…λ ₯이 μ£Όμ–΄μ§€λ©΄ ν•΄λ‹Ήν•˜λŠ” ν‚€ μž…λ ₯κ³Ό λŒ€μ‘λ˜λŠ” 단어가 λͺ‡ κ°œμΈμ§€ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μ›ν•œλ‹€.

μ΄λŸ¬ν•œ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λΌ.


[μž…λ ₯]

맨 μœ„ 쀄에 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ κ°œμˆ˜κ°€ μ£Όμ–΄μ§„λ‹€.

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ˆλ‹€ μˆœμ„œλŒ€λ‘œ 첫 번째 쀄에 ν‚€ μž…λ ₯을 λœ»ν•˜λŠ” 2μ—μ„œ 9κΉŒμ§€μ˜ μžμ—°μˆ˜λ‘œ 이루어진 1 이상 1000 μ΄ν•˜ 길이의 λ¬Έμžμ—΄ S와 λ‹¨μ–΄μ˜ 개수 N(1 ≤ N ≤ 1000)이 μ£Όμ–΄μ§„λ‹€.

κ·Έ λ‹€μŒ 쀄에 N개의 단어(λͺ¨λ“  λ‹¨μ–΄μ˜ κΈΈμ΄λ“€μ˜ 합은 1000000 μ΄ν•˜)κ°€ λ„μ–΄μ“°κΈ°λ‘œ κ΅¬λΆ„λ˜μ–΄ μ£Όμ–΄μ§„λ‹€.


[좜λ ₯]

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ˆλ‹€ ν‚€ μž…λ ₯에 λŒ€μ‘λ˜λŠ” 사전 μ•ˆμ˜ λ‹¨μ–΄μ˜ 수λ₯Ό 좜λ ₯ν•˜λΌ.


[Hint]

첫 번째 μΌ€μ΄μŠ€μ—μ„œ "mono"κ°€ 숫자 6에 λŒ€μ‘λ˜λŠ” μœ μΌν•œ 단어이닀.

두 번째 μΌ€μ΄μŠ€μ—μ„œ 두 λ‹¨μ–΄μ˜ 첫째 κΈ€μžλŠ” 숫자 5에, λ‘˜μ§Έ κΈ€μžλŠ” 숫자 2에 λͺ¨λ‘ ν•΄λ‹Ήλœλ‹€.

λ°˜μ‘ν˜•