Problem Solving
[프로그래머스] 위장 - Python3
Dev_en
2023. 1. 31. 04:56
문제 설명
[의상의 이름, 종류]들이 주어질 때, 1개 이상의 의상을 입을 수 있는 의상 조합의 수를 구하는 문제
https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 분류 - 해시
- 난이도 - Level 2
접근 방법
1) 종류별 조합을 구하기 위해 {의상 종류: [의상 이름, 의상 이름, ...]} 형태의 딕셔너리를 만든다.
2) 종류별 가능한 조합의 수들을 모두 곱한다. (종류별 0개 또는 1개 선택 가능)
3) 어떤 종류도 선택하지 않는 경우의 수 1을 뺀다.
답안 코드
+10
def solution(clothes):
answer = 1
# 종류 - 이름 사전 생성
dic = {}
for cloth in clothes:
name = cloth[0]
kind = cloth[1]
if kind not in dic:
dic[kind] = [name]
else:
dic[kind].append(name)
# 조합
# nC0~1 * mC0~1 ... - 1
for kind in dic.keys():
answer *= (1+len(dic[kind]))
answer -= 1
return answer