[πŸ™ μ•Œκ³ λ¦¬μ¦˜] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ lv.2- μœ„μž₯ / Python

dsfasdΒ·2022λ…„ 11μ›” 23일
0

문제

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


μ½”λ“œ

μ²˜μŒμ—λŠ” μ•„λž˜μ™€ 같이 μ‘°ν•©μœΌλ‘œ ν’€μ—ˆλŠ”λ° ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 1λ²ˆμ—μ„œ μ‹œκ°„μ΄ˆκ³Όκ°€ λ°œμƒν–ˆλ‹€.γ… γ… 
μ°Ύμ•„λ³΄λ‹ˆ μˆœμ—΄, μ‘°ν•© λ©”μ„œλ“œλŠ” 정말 μœ μš©ν•˜μ§€λ§Œ μ‹œκ°„ λ³΅μž‘λ„κ°€ κ½€λ‚˜ κ±Έλ €μ„œ μ½”λ”©ν…ŒμŠ€νŠΈμ—μ„œλŠ” λ˜λ„λ‘ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것이 μ’‹λ‹€κ³  ν•œλ‹€πŸ˜΅

from itertools import combinations
def solution(clothes):
    
    dic = {}
    for i in clothes:
        if i[1] in dic:  
            dic[i[1]]+=1
        else: 
            dic[i[1]]=1
   
    sum = 0
    values = dic.values()
    
    for k in range(1,len(values)+1): 
        arr = list(combinations(values,k))
        for i in arr:
            ans = 1
            for j in i:
                ans *= j
            sum += ans
    return(sum)


κ·Έλž˜μ„œ 방법을 μ°Ύμ•„λ³΄λ‹ˆ 차라리 경우의 수λ₯Ό λ‘μ–΄μ„œ μ–΄λ–€ μ’…λ₯˜μ˜ μ˜·μ„ μž…μ§€ μ•ŠλŠ” κ²½μš°κΉŒμ§€ κ³ λ €ν•˜μ—¬ n+1을 ν•΄μ€€ 뒀에, λͺ¨λ‘ κ³±ν•˜κ³  λ¬Έμ œμ—μ„œ μ•ˆμž…λŠ” κ²½μš°λŠ” μ—†λ‹€ν•˜μ˜€μœΌλ‹ˆ -1을 ν•΄μ£ΌλŠ” λ°©μ‹μœΌλ‘œ 많이 ν’€μ—ˆκΈΈλž˜ μ°Έκ³ ν–ˆλ‹€ γ… 

μ•„λž˜μ²˜λŸΌ ν‘Έλ‹ˆκΉŒ λ“œλ””μ–΄ 1번 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ 톡과가 λœλ‹€.γ… 

from itertools import combinations
def solution(clothes):

    dic = {}
    for i in clothes:
        if i[1] in dic:  #μΉ΄ν…Œκ³ λ¦¬ 이미 있으면 개수 μΆ”κ°€ 
            dic[i[1]]+=1
        else: #μΉ΄ν…Œκ³ λ¦¬ μ—†μœΌλ©΄ 1둜 μ΄ˆκΈ°ν™” 
            dic[i[1]]=1

    values = dic.values()
    print('values',values) # κ°€μ§€μ˜ 수, ν‚€μ˜ κ°’λ“€λ§Œ 
    
    sum = 1
    
    for c in values: #μ‘°ν•©μˆ˜ κ΅¬ν•˜λŠ” 식, ν‚€μ˜ 값듀을 λŒλ©΄μ„œ 
        sum*=(c+1) # μ•ˆμž…λŠ” κ²½μš°κΉŒμ§€ κ³ λ €ν•΄μ„œ +1둜 κ³„μ‚°ν•΄μ„œ κ³±ν•΄μ€Œ 
    sum-=1 # λ¬Έμ œμ—μ„œ μ΅œμ†Œ ν•œκ°œλŠ” μž…μœΌλ‹ˆ λͺ¨λ‘ μ•ˆμž…λŠ” 경우 빼야됨 

    return sum
profile
기둝을 μ •λ¦¬ν•˜λŠ” 곡간!

0개의 λŒ“κΈ€