[프로그래머스/파이썬] 해시 위장

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


알고리즘 분류

  • 해시

문제풀이

array는 각 의상의 종류에 따른 의상들을 가지고 있다.

이를 활용해 lst는 종류 별 의상의 개수를 가지게 된다.
ex) lst=[1,2]

특정 종류의 옷을 항상 선택해야 하는 것은 아니므로 선택하지 않는 경우의 수까지 고려하여 각각의 경우에 +1씩해서 서로 곱해주고, 하루에 최소 한 개의 의상은 입으므로 모든 의상을 착용하지 않는 1을 빼준다.

(한 옷의 종류수 + 1(안입는경우의수))*(한 옷의 종류수 + 1(안입는경우의수))-(아무것도 안 입는경우의수)

소스코드

def solution(clothes):
    kinds=[]
    for i in clothes:
        name,kind=i
        kinds.append(kind)
    kinds=set(kinds)

    array={i:[] for i in kinds}

    for i in clothes:
        name,kind=i
        array[kind].append(name)

    lst=[]
    for i in array:
        lst.append(len(array[i]))
    
    result=1
    for i in lst:
        result*=(i+1)

    return (result-1)

좋은 웹페이지 즐겨찾기