개발/π™‹π™§π™€π™œπ™§π™–π™’π™’π™šπ™§π™¨

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ ν•΄μ‹œ 'μœ„μž₯' 파이썬 풀이

beomcoder 2023. 2. 26. 01:51
728x90
λ°˜μ‘ν˜•
 

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

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 λ§€μΉ­ λ°›μœΌμ„Έμš”.

programmers.co.kr

"""
μŠ€νŒŒμ΄λ“€μ€ 맀일 λ‹€λ₯Έ μ˜·μ„ μ‘°ν•©ν•˜μ—¬ μž…μ–΄ μžμ‹ μ„ μœ„μž₯ν•©λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄ μŠ€νŒŒμ΄κ°€ κ°€μ§„ 옷이 μ•„λž˜μ™€ κ°™κ³  였늘 μŠ€νŒŒμ΄κ°€ λ™κ·Έλž€ μ•ˆκ²½,
κΈ΄ μ½”νŠΈ, νŒŒλž€μƒ‰ ν‹°μ…”μΈ λ₯Ό μž…μ—ˆλ‹€λ©΄ λ‹€μŒλ‚ μ€ μ²­λ°”μ§€λ₯Ό μΆ”κ°€λ‘œ μž…κ±°λ‚˜ 
λ™κ·Έλž€ μ•ˆκ²½ λŒ€μ‹  κ²€μ • μ„ κΈ€λΌμŠ€λ₯Ό μ°©μš©ν•˜κ±°λ‚˜ ν•΄μ•Ό ν•©λ‹ˆλ‹€.
(μ€‘λž΅)
"""

def solution(clothes):
    _dict = {k:[] for _,k in clothes}
    for v, k in clothes:
        _dict[k].append(v)
    res = 1
    for v in _dict.values():
        res *= (len(v) + 1)
    return res - 1

"""
생각보닀 κ°„λ‹¨ν•˜κ²Œ ν’€μ—ˆλ‹€.
기본으둜 μƒκ°ν•œ 방식은 μ˜·μž…λŠ” 경우의 μˆ˜μ˜€λ‹€.
(λΉ¨κ°•μ˜·, νŒŒλž‘μ˜·) , (λΉ¨κ°•λ°”μ§€, νŒŒλž‘λ°”μ§€) 라면 경우의 μˆ˜κ°€ 2*2 = 4 이닀.
이건 무쑰건 1κ°€μ§€λ₯Ό κ³¨λΌμ„œ μž…μ–΄μ•Ό ν•œλ‹€λŠ” 것이닀.

ν•˜μ§€λ§Œ μŠ€νŒŒμ΄λŠ” λ³€νƒœμΈμ§€ 1κ°œλΌλ„ μž…μ—ˆμœΌλ©΄
λ°”μ§€λ₯Ό μ•ˆμž…μ–΄λ„ 되고, μƒμ˜λ₯Ό μ•ˆμž…μ–΄λ„ λœλ‹€.

쑰금만 달리 μƒκ°ν•΄μ„œ μ˜·μ„ μ•ˆμž…λŠ” 수λ₯Ό 투λͺ…μ˜·μ„ μž…λŠ”λ‹€κ³  μ •ν•΄λ³΄μž.

(λΉ¨κ°•μ˜·, νŒŒλž‘μ˜·, 투λͺ…μ˜·), (λΉ¨κ°•λ°”μ§€, νŒŒλž‘λ°”μ§€, 투λͺ…λ°”μ§€)
3*3 = 9 μ΄μ§€λ§Œ 투λͺ…μ˜·κ³Ό 투λͺ…λ°”μ§€λ₯Ό μž…λŠ”λ‹€λ©΄ 1κ°€μ§€λŠ” 무쑰건 μž…μ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ—
이 투λͺ…μ˜·κ³Ό 투λͺ…λ°”μ§€λ₯Ό μž…λŠ” 경우인 1을 λΉΌμ£Όμ—ˆλ‹€. 9 - 1 = 8

- 10 line
옷의 λ¦¬μŠ€νŠΈμ—μ„œ key(옷의 μ’…λ₯˜)만 λ¨Όμ € μ •μ˜ν•΄μ„œ dict둜 λ§Œλ“€μ—ˆλ‹€.

- 11~12 line
μ˜·μ’…λ₯˜μ— λ§žμΆ°μ„œ μ˜·μ„ λ„£μ–΄μ£Όμ—ˆλ‹€.

- 13~ line
결과값을 리턴해쀄 resλ₯Ό μ„ μ–Έν•œλ‹€.
μ˜·μ’…λ₯˜μ— ν•΄λ‹Ήν•˜λŠ” μ˜·κ°€μ§€μˆ˜(len(v))에 투λͺ…μ˜·(1)을 더해 κ³±ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.
그리고 λͺ¨λ“  μ°©μž₯에 투λͺ…ν•œμ˜·μ„ μž…λŠ” 경우(1)을 λΉΌμ£Όκ³  λ¦¬ν„΄ν•΄μ£Όμ—ˆλ‹€.
"""

 

728x90
λ°˜μ‘ν˜•