728x90
반응형
문제:
스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다.
스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요.
풀이 방법:
해시 태그를 가진 문제이므로 clothes를 해시로 바꾸었다. 의상의 이름은 문제에서 크게 필요하지 않으므로 의상의 종류가 몇 개있는지를 나타내는 딕셔너리 타입으로 바꾸었다. 해시 타입인 count에 있으면 그 의상의 종류에 +1을 하고 없다면 새로 추가하도록 하였다.
각 의상별로 갯수를 파악했으면 경우의 수 문제이므로 다음과 같이 구할 수 있다.
입출력의 예시 중 첫번째이다.
eyewear | headgear |
안입는다 |
yellow_hat |
green_turban |
안입는다. |
안입는다 |
yellow_hat |
green_turban |
blue_sunglasses |
blue_sunglasses |
blue_sunglasses+yellow_hat |
blue_sunglasses+green_turban |
이 중 하나도 안 입는 경우는 없으므로 이 경우만 제외해야 한다.
즉 각 의상의 종류에 1씩 더한 값들을 모두 곱한 뒤에 하나도 안 입는 경우를 제거해야 하므로 -1을 빼서 반환하도록 한다.
1 2 3 4 5 6 7 8 9 10 11 12 | def solution(clothes): count={} for i in clothes: if i[1] in count: count[i[1]]+=1 else: count[i[1]]=1 count_list=count.values() answer=1 for i in count_list: answer*=i+1 return answer-1 | cs |
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[Programmers]Lv 2. 숫자 야구 (0) | 2019.02.22 |
---|---|
[Programmers]Lv 3. 2 X N 타일링 (0) | 2019.02.21 |
[Programmers]Lv 1.N으로 표현 (0) | 2019.02.19 |
[Programmers]Lv 2. H-Index (0) | 2019.02.18 |
[Programmers]Lv 2.전화번호 목록 (0) | 2019.02.16 |