https://programmers.co.kr/learn/courses/30/lessons/42578
def solution(clothes):
answer = 1
dic = {}
for i in clothes:
if not i[1] in dic:
dic[i[1]] = 1
else:
dic[i[1]] += 1
for v in dic.values():
answer *= (v+1)
return answer - 1
해시 카테고리의 문제를 풀었다.
입력이
clothes = [["yellowhat", "headgear"], ["bluesunglasses", "eyewear"], ["green_turban", "headgear"]]
일때,
딕셔너리에 종류별로 옷이 몇 벌 있는지 저장하면,
dic = {"headgear" : 2, "eyewear" : 1}
headgear 에서 옷을 골라 입을 경우의 수 : yellowhat, green_turban, 착용안함
eyegear 에서 옷을 골라 입을 경우의 수 : bluesunglasses
각 경우의 수 의 곱 3*2 = 6 이 모든 경우의 수 이지만,
아무것도 착용하지 않는 경우를 제외해야 하므로 6 - 1 = 5
def solution(clothes):
answer = 1 # answers에 각 경우의 수를 곱하기 위해 1로 초기화
dic = {} # 해시 테이블 초기화
for i in clothes: # clothes 리스트를 돌면서
if not i[1] in dic: # 처음 보는 옷 종류면
dic[i[1]] = 1 # 딕셔너리에 새로 선언
else: # 있던 옷 종류면
dic[i[1]] += 1 # 개수 추가
for v in dic.values(): # 딕셔너리에 value(종류별 옷 개수)를 돌면서
answer *= (v+1) #각 경우의 수들을 곱해줌
return answer - 1 # 아무것도 입지않는 경우 1 제외
정확성 테스트
테스트 1 〉 통과 (0.01ms, 10MB)
테스트 2 〉 통과 (0.01ms, 10MB)
테스트 3 〉 통과 (0.01ms, 10.2MB)
테스트 4 〉 통과 (0.01ms, 10.1MB)
테스트 5 〉 통과 (0.01ms, 9.98MB)
테스트 6 〉 통과 (0.01ms, 10.1MB)
테스트 7 〉 통과 (0.02ms, 10.1MB)
테스트 8 〉 통과 (0.01ms, 10MB)
테스트 9 〉 통과 (0.00ms, 10.2MB)
테스트 10 〉 통과 (0.00ms, 10.1MB)
테스트 11 〉 통과 (0.00ms, 10.1MB)
테스트 12 〉 통과 (0.01ms, 10.3MB)
테스트 13 〉 통과 (0.01ms, 10.1MB)
테스트 14 〉 통과 (0.01ms, 10.1MB)
테스트 15 〉 통과 (0.01ms, 10.1MB)
테스트 16 〉 통과 (0.01ms, 10MB)
테스트 17 〉 통과 (0.01ms, 10MB)
테스트 18 〉 통과 (0.01ms, 10.2MB)
테스트 19 〉 통과 (0.01ms, 10.2MB)
테스트 20 〉 통과 (0.00ms, 10MB)
테스트 21 〉 통과 (0.01ms, 9.95MB)
테스트 22 〉 통과 (0.00ms, 10.1MB)
테스트 23 〉 통과 (0.01ms, 10.1MB)
테스트 24 〉 통과 (0.01ms, 10.1MB)
테스트 25 〉 통과 (0.01ms, 10.1MB)
테스트 26 〉 통과 (0.01ms, 10.1MB)
테스트 27 〉 통과 (0.01ms, 10.1MB)
테스트 28 〉 통과 (0.01ms, 10.2MB)