취준/프로그래머스
[프로그래머스 Programmers][Python] 위장
puff
2020. 2. 12. 13:01
문제 : https://programmers.co.kr/learn/courses/30/lessons/42578
코딩테스트 연습 - 위장 | 프로그래머스
programmers.co.kr
이 문제도 역시 Dictionary, 해쉬맵을 써서 풀면 되는 문제다.
처음에는 ( 의상 종류, 의상 이름) 으로 dictionary에 넣는다.
그 다음이 중요한데,
- 각 의상중에 하나 이상만 쓰면 되니까, 어떤 의상 종류는 안쓸수 있다.
- 근데 또, 다 안쓸수는 없다.
- 따라서, (나같은 경우에는) "" 을 각 의상 종류에다 넣어서 안입는 null value 를 넣었다.(closet[k].append("") )
- 이제 각 의상 종류를 모두 곱한 값이 총 방법의 갯수인데, 빼먹은게 하나있다.
- 1-2 에서 null value를 넣었으니 전체가 null value 인 세트도 하나 나올거고, 이건 빼줘야한다.
- 그래서 최종 정답은 -> 각 의상종류 개수 곱 - 1(하나도 안쓴거)
def solution(clothes):
closet = dict()
for c in clothes:
if c[1] not in closet:
closet[c[1]] = [c[0]]
else:
closet[c[1]].append([c[0]])
for k in closet.keys():
closet[k].append("")
answer = 1
for v in closet.values():
answer = answer*len(v)
answer-=1
return answer