반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/42578?language=python3
코딩테스트 연습 - 위장
programmers.co.kr
해결
def solution(clothes):
classificate = {}
# 의상 타입별 개수 구하기
for clothe in clothes:
if clothe[1] in classificate:
classificate[clothe[1]] += 1
else:
classificate[clothe[1]] = 1
# 조합의 수 구하기
answer = 1
for key in classificate.keys():
answer *= (classificate[key]+1)
# 아무것도 안입는 경우 제외
return answer -1
풀이 과정
만약 의상의 종류가 A, B, C가 있고 각각 2, 3, 4개의 아이템이 있다고 생각해보자.
일단 의상의 종류 A에서 하나를 선택하거나 선택하지 않을 수 있다.
B, C도 마찬가지다.
즉 (A의 갯수 + 1) * (B의 갯수 + 1) * (C의 갯수 +1)을 하면 조합을 구할 수 있다.
하지만 아무것도 입지 않는 경우 1은 제외해야 한다.
중간에 생각했다가 포기한 풀이 과정
A에 총 2가지
B에 총 3가지
C에 총 4가지
의 의상이 있을때
아래와 같은 공식으로도 구할 수 있다.
(2+3+4) + (2*3 + 2*4 + 3*4) + (2*3*4)
이를 코드화 하고 싶었는데 어떻게 해야할지 막막했다.
조합을 구하는 방법에 대해서 좀 더 알아봐야 겠다.
반응형