https://programmers.co.kr/learn/courses/30/lessons/42578
"""
1. 아이디어
해시를 활용한 풀이
2. 시간복잡도
"""
def solution(clothes):
# 1. 옷을 종류별로 구분하기
hash_map = {}
for name, type in clothes:
hash_map[type] = hash_map.get(type, 0) + 1
# 2. 입지 않는 경우를 추가하여 모든 조합 계산하기
answer = 1
for type in hash_map:
answer *= (hash_map[type] + 1)
# 3. 아무종류의 옷도 입지 않는 경우 제외
return answer - 1
HashMap이란 Key-Value의 Pair를 관리하는 Dictionary이다.
이 문제에서 Key는 옷의 종류가 되고, Value는 해당 옷 종류의 가짓수(count)를 의미한다.
HashMap.get(type, 0)
이 함수는 만약 'A'라는 Key에 해당하는 Value가 있으면 가져오고, 아닐 경우 0을 Default로 지정하여 사용하겠다는 의미의 함수이다.
Value는 곧 옷 종류의 가짓수가 되기 때문에, 이전에 값이 있었으면 기존 값에 + 1을 하면 되고, 없었으면 1을 입력하면 된다.
주석 처리된 부분을 잘 봐야함.
옷의 개수를 해시에 추가 해줄때 초기값은 2임. (해당 옷을 입지 않는 경우)
그리고 마지막엔 -1을 해줘야 함. (모든 옷은 입고 있지 않는 경우는 없다고 문제에 명시되어 있기 때문에)