🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μœ„μž₯ (level2, python)

개발자 HOON 2022. 9. 10. 13:33

문제 μ„€λͺ…

 

μŠ€νŒŒμ΄λ“€μ€ 맀일 λ‹€λ₯Έ μ˜·μ„ μ‘°ν•©ν•˜μ—¬ μž…μ–΄ μžμ‹ μ„ μœ„μž₯ν•©λ‹ˆλ‹€.

 

예λ₯Ό λ“€μ–΄ μŠ€νŒŒμ΄κ°€ 가진 옷이 μ•„λž˜μ™€ κ°™κ³  였늘 μŠ€νŒŒμ΄κ°€ λ™κ·Έλž€ μ•ˆκ²½, κΈ΄ μ½”νŠΈ, νŒŒλž€μƒ‰ ν‹°μ…”μΈ λ₯Ό μž…μ—ˆλ‹€λ©΄ λ‹€μŒλ‚ μ€ 청바지λ₯Ό μΆ”κ°€λ‘œ μž…κ±°λ‚˜ λ™κ·Έλž€ μ•ˆκ²½ λŒ€μ‹  κ²€μ • μ„ κΈ€λΌμŠ€λ₯Ό μ°©μš©ν•˜κ±°λ‚˜ ν•΄μ•Ό ν•©λ‹ˆλ‹€.

 

μ’…λ₯˜μ΄λ¦„

μŠ€νŒŒμ΄κ°€ 가진 μ˜μƒλ“€μ΄ λ‹΄κΈ΄ 2차원 λ°°μ—΄ clothesκ°€ μ£Όμ–΄μ§ˆ λ•Œ μ„œλ‘œ λ‹€λ₯Έ 옷의 μ‘°ν•©μ˜ 수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄μ£Όμ„Έμš”.

 


μ œν•œμ‚¬ν•­

 

  • clothes의 각 행은 [μ˜μƒμ˜ 이름, μ˜μƒμ˜ μ’…λ₯˜]둜 이루어져 μžˆμŠ΅λ‹ˆλ‹€.
  • μŠ€νŒŒμ΄κ°€ 가진 μ˜μƒμ˜ μˆ˜λŠ” 1개 이상 30개 μ΄ν•˜μž…λ‹ˆλ‹€.
  • 같은 이름을 가진 μ˜μƒμ€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • clothes의 λͺ¨λ“  μ›μ†ŒλŠ” λ¬Έμžμ—΄λ‘œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€.
  • λͺ¨λ“  λ¬Έμžμ—΄μ˜ κΈΈμ΄λŠ” 1 이상 20 μ΄ν•˜μΈ μžμ—°μˆ˜μ΄κ³  μ•ŒνŒŒλ²³ μ†Œλ¬Έμž λ˜λŠ” '_' 둜만 이루어져 μžˆμŠ΅λ‹ˆλ‹€.
  • μŠ€νŒŒμ΄λŠ” ν•˜λ£¨μ— μ΅œμ†Œ ν•œ 개의 μ˜μƒμ€ μž…μŠ΅λ‹ˆλ‹€.

μž…μΆœλ ₯ 예
 

 

μž…μΆœλ ₯ 예 μ„€λͺ…

 

예제 #1
headgear에 ν•΄λ‹Ήν•˜λŠ” μ˜μƒμ΄ yellow_hat, green_turban이고 eyewear에 ν•΄λ‹Ήν•˜λŠ” μ˜μƒμ΄ blue_sunglassesμ΄λ―€λ‘œ μ•„λž˜μ™€ 같이 5개의 쑰합이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

 

예제 #2
face에 ν•΄λ‹Ήν•˜λŠ” μ˜μƒμ΄ crow_mask, blue_sunglasses, smoky_makeupμ΄λ―€λ‘œ μ•„λž˜μ™€ 같이 3개의 쑰합이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

 


 

풀이 μ½”λ“œ

def solution(clothes):
    hash = {}
    for c in clothes:
        name, kind = c
        if kind not in hash:
            hash[kind] = 1
        else:
            hash[kind] += 1
            
    answer = 1
    for key in hash:
        answer *= (hash[key]+1)

    return answer-1

해쉬λ₯Ό μ΄μš©ν–ˆλ‹€.

사싀 옷의 이름은 λ‹€ λ‹€λ₯Έ 것이 보μž₯이 λ˜μ–΄μžˆκΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή 의λ₯˜μ˜ μ’…λ₯˜μ˜ 개수만 μ„Έλ©΄ λ˜λŠ” λ¬Έμ œμ΄λ‹€.

 

λ§Œμ•½ λͺ¨μž A, B와 μƒμ˜ C, Dκ°€ μžˆλ‹€κ³  ν•˜μž.

λͺ¨μž = μ•ˆ μ“΄ 경우 / A μ“°λŠ” 경우 / B μ“°λŠ” 경우 = 2+1 = 3

μƒμ˜ = μ•ˆ μž…μ€ 경우 / C μž…λŠ” 경우 / D μž…λŠ” 경우 = 2+1 = 3

μ΄λ•Œ λͺ¨μžμ™€ μƒμ˜λ₯Ό λͺ¨λ‘ μ•ˆ μž…μ€ κ²½μš°λŠ” μ œκ±°ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ—, (2+1) * (2+1) - 1의 식이 λ‚˜μ˜¨λ‹€.

 

이 점을 μ΄μš©ν•΄ 문제λ₯Ό ν•΄κ²°ν•˜λ©΄ μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆλ‹€.