[λ°±μ€€/python] 9375번 : νŒ¨μ…˜μ™• μ‹ ν•΄λΉˆ

2021. 8. 12. 23:47

문제

ν•΄λΉˆμ΄λŠ” νŒ¨μ…˜μ— 맀우 λ―Όκ°ν•΄μ„œ ν•œλ²ˆ μž…μ—ˆλ˜ μ˜·λ“€μ˜ 쑰합을 μ ˆλŒ€ λ‹€μ‹œ μž…μ§€ μ•ŠλŠ”λ‹€. 예λ₯Ό λ“€μ–΄ 였늘 ν•΄λΉˆμ΄κ°€ μ•ˆκ²½, μ½”νŠΈ, μƒμ˜, μ‹ λ°œμ„ μž…μ—ˆλ‹€λ©΄, λ‹€μŒλ‚ μ€ 바지λ₯Ό μΆ”κ°€λ‘œ μž…κ±°λ‚˜ μ•ˆκ²½λŒ€μ‹  렌즈λ₯Ό μ°©μš©ν•˜κ±°λ‚˜ ν•΄μ•Όν•œλ‹€. ν•΄λΉˆμ΄κ°€ 가진 μ˜μƒλ“€μ΄ μ£Όμ–΄μ‘Œμ„λ•Œ κ³Όμ—° ν•΄λΉˆμ΄λŠ” μ•ŒλͺΈμ΄ μ•„λ‹Œ μƒνƒœλ‘œ λ©°μΉ λ™μ•ˆ 밖에 λŒμ•„λ‹€λ‹ 수 μžˆμ„κΉŒ?

 

μž…λ ₯

첫째 쀄에 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ 주어진닀. ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λŠ” μ΅œλŒ€ 100이닀.

  • 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 첫째 μ€„μ—λŠ” ν•΄λΉˆμ΄κ°€ 가진 μ˜μƒμ˜ 수 n(0 ≤ n ≤ 30)이 μ£Όμ–΄μ§„λ‹€.
  • λ‹€μŒ nκ°œμ—λŠ” ν•΄λΉˆμ΄κ°€ 가진 μ˜μƒμ˜ 이름과 μ˜μƒμ˜ μ’…λ₯˜κ°€ 곡백으둜 κ΅¬λΆ„λ˜μ–΄ 주어진닀. 같은 μ’…λ₯˜μ˜ μ˜μƒμ€ ν•˜λ‚˜λ§Œ μž…μ„ 수 μžˆλ‹€.

λͺ¨λ“  λ¬Έμžμ—΄μ€ 1이상 20μ΄ν•˜μ˜ μ•ŒνŒŒλ²³ μ†Œλ¬Έμžλ‘œ μ΄λ£¨μ–΄μ ΈμžˆμœΌλ©° 같은 이름을 가진 μ˜μƒμ€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

좜λ ₯

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ— λŒ€ν•΄ ν•΄λΉˆμ΄κ°€ μ•ŒλͺΈμ΄ μ•„λ‹Œ μƒνƒœλ‘œ μ˜μƒμ„ μž…μ„ 수 μžˆλŠ” 경우λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

 

μ •λ‹΅

import sys 
input = sys.stdin.readline

T = int(input())
for _ in range(T):
    n = int(input())
    case = {}
    for _ in range(n):
        c = list(input().split())
        if c[1] in case:
            case[c[1]] += 1
        else:
            case[c[1]] = 2  # μ•ˆμž…λŠ” 경우 포함 -> 2개
    answer = 1
    for cnt in case.values():
        answer *= cnt
    print(answer-1)

각 μ˜μƒμ˜ μ’…λ₯˜λ³„λ‘œ 개수λ₯Ό case λ”•μ…”λ„ˆλ¦¬μ— μ €μž₯ν•œλ‹€.

이 λ•Œ 졜초둜 μ €μž₯ν•  λ•ŒλŠ” 1이 μ•„λ‹Œ 2λ₯Ό μ €μž₯ν•œλ‹€.

μ’…λ₯˜λ³„λ‘œ μ•ˆμž…λŠ” 경우λ₯Ό ν¬ν•¨ν•œ 경우의 μˆ˜κ°€ μ €μž₯될 것이닀.

μ’…λ₯˜λ³„ 개수λ₯Ό κ³±ν•˜κ³  아무것도 μ•ˆμž…λŠ” 경우의 수 1을 λΊ΄ 좜λ ₯ν•œλ‹€.

728x90

BELATED ARTICLES

more