programmers.co.kr/learn/courses/30/lessons/42578
1) all_clothes : 의상 종류의 "수" 채워 넣을 리스트
2) class_clothes : 입력받은 모든 의상 class 리스트
3) class_clothe : 입력받은 의상 중복 제외한 class 리스트
4) 중복 제외 의상 class 리스트 element에서 하나씩 꺼내서 모든 의상 class 리스트에서 개수를 세어 all_clothes에 append 합니다.
5) all_clothes에서 각 의상 종류의 수 값에 +1 을 더하여 곱하고 마지막에 1을 뺐습니다.
6) 만약 특정 의상(headgear) 수가 3개, 다른 의상(eyewear)의 수가 5개 라면,
두 의상의 조합 = 3x5 = 15가지,
하나씩 입을 경우 = 3+5
모두 안 입는 경우 = 1
따라서 15 +3+5 -1 = (3+1)x(5+1)-1 입니다.
따라서 모든 의상 종류의 수에 1을 더해서 k+1의 곱을 만들고 모두 안 입는 경우 1을 빼주었습니다.
def solution(clothes):
all_clothes = []
class_clothes = [j[1] for j in clothes]
class_clothe = set(class_clothes)
answer = 1
for i in class_clothe:
all_clothes.append((class_clothes.count(i)))
answer = 1
for k in all_clothes:
answer *= k+1
answer -= 1
return answer
print(solution([["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]))
print(solution([["crow_mask", "face"], ["blue_sunglasses", "face"], ["smoky_makeup", "face"]]))
[out]
5
3
'2021 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] Lv.2 - 다리를 지나는 트럭 (Python) (0) | 2021.01.01 |
---|---|
[프로그래머스] Lv.2 - 프린터 (Python) (0) | 2020.12.29 |
[프로그래머스] Lv.1 - 실패율 (Python) (0) | 2020.12.29 |
[프로그래머스] Lv.1 - 예산 (Python) (0) | 2020.12.21 |
[백준] 10867 - 중복 빼고 정렬하기_python (0) | 2020.12.10 |
댓글