bingual 2024. 3. 20. 04:04
반응형

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제풀이

조합을 구하는 경우는 다항 시간복잡도를 가지게 된다. 따라서 다항식을 적용하여 풀이할 수 있다.

 

  • 최소 하나의 옷을 입는 경우에 대해 계산할 수 있도록 answer는 1로 초기화한다.
  • 옷을 종류별로 구분 지어준 뒤 옷의 조합을 구해준다. 이때 해당 크기의 + 1을 해서 해당 종류의 옷을 입지 않는 경우도 고려해 준다.
  • 모든 종류의 옷을 입지 않는 경우를 고려해 answer에 -1을 해준다.
from collections import defaultdict


def solution(clothes):
    answer = 1
    cdict = defaultdict(list)
    for x, y in clothes:
        cdict[y].append(x)
    for y in cdict:
        answer *= len(cdict[y]) + 1
    return answer - 1