본문 바로가기

알고리즘

프로그래머스 - 의상(Python)

반응형

문제 설명

알고리즘 고민

처음에는 각각을 딕셔너리로 만든 후에 조합을 이용해서 구해야 겠다고 생각했다. 그러나 아무리 해도 모든 경우를 조합으로 구한다는 것이 시간이 너무 오래 걸릴 것 같고 접근 자체가 robust하다고 생각해서 다른 방법을 생각해보았다. 결국 조합의 모든 경우의 수에서 아무 것도 입지 않는 경우를 제외한다면 모든 경우의 수 이므로 각 옷의 종류 별 개수를 구하고 하나 더한 값을 모두 곱한 후 하나를 빼서 해결하였다.

코드

def solution(clothes):
    closets = {}
    for i in clothes:
        if i[1] not in closets:
            closets[i[1]] = 1
        else:
            closets[i[1]] += 1
    answer = 1
    for j in closets:
        answer *= (closets[j]+1) 
    answer -= 1
    return answer
반응형