반응형
Level 2 해시
문제 : https://programmers.co.kr/learn/courses/30/lessons/42578
제출 코드
def solution(clothes):
answer = 1
dic = {category : 0 for name, category in clothes}
for name, category in clothes:
dic[category] += 1
if len(dic) == 1:
print(dic[category])
answer = dic[category]
return answer
for k in dic.keys():
answer *= (dic[k]+1)
answer -= 1
return answer
정리 및 복습
경우의 수를 찾지 못해서 질문하기 도움을 받았습니다.
다행히도 쉽게 설명해주는 분에게 힌트를 얻어 빠르게 풀 수 있었습니다.
만약 headgear(A, B) 2개, eyewear(a) 1개라면
headgear 를 끼는 경우의 수는 (X, A, B)
eyewear 를 끼는 경우의 수는 (X, a) 이므로
모든 조합을 나타내면 다음과 같습니다.
0개 끼는 경우 : (X, X)
1개 끼는 경우 : (A, X), (B, X), (X, a)
2개 끼는 경우 : (A, a), (B, a)
(X, A, B) * (X, a) - 1 = (2+1) * (1+1) - 1
총 6개가 나오지만 최소 1개 이상 착용하므로 -1을 해주면 됩니다.
즉 각 (카테고리에 해당하는 옷의 수 +1)를 정답에 누적으로 곱해주고 마지막에 1을 빼주면 됩니다.
반응형
'ProblemSolving > Hash' 카테고리의 다른 글
프로그래머스 베스트앨범 (파이썬) (0) | 2022.05.05 |
---|---|
프로그래머스 전화번호 목록 (파이썬) (0) | 2022.05.03 |
프로그래머스 완주하지 못한 선수 (파이썬) (0) | 2022.05.03 |
프로그래머스 신고 결과 받기 (파이썬) (0) | 2022.05.03 |