알고리즘
[프로그래머스] 의상(python)
yjenis
2024. 6. 11. 11:00

문제 링크
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제

나의 풀이
def solution(clothes):
answer = 1
clothes_dict = {}
for clothe in clothes :
if clothe[1] not in clothes_dict.keys() :
# 옷 종류(key) 딕셔너리에 없으면 1 넣어서 만들기
clothes_dict[ clothe[1] ] = 1
else :
# 위장할 종류(clo[1])가 딕셔너리에 이미 있으면 더하기 1
clothes_dict[ clothe[1] ] += 1
for key, value in clothes_dict.items() :
answer *= ( value + 1 )
# 해당 key의 (value+1)만큼 경우의 수가 있음
answer -= 1
# 옷을 하나도 안입는 경우는 제외
return answer
추가 코멘트
- 자료를 원하는 형식으로 받은 다음에는 사실 답을 도출하는 코드는 단 3줄 정도이다.(아래 참고)
for key, value in clothes_dict.items() :
answer *= ( value + 1 )
# 해당 key의 (value+1)만큼 경우의 수가 있음
answer -= 1
# 옷을 하나도 안입는 경우는 제외
- 예를 들어 얼굴, 상의, 하의 3가지의 종류가 있고 각 종류마다 차례로 경우의 수가 1, 2, 3이라면
종류별로 최대 1가지만 입을 수 있기 때문에 아무 것도 선택하지 않는 0을 포함하여 각 종류별 경우의수+1한 값을 모두 곱해주면 된다.
이때, 하루에 하나는 입어야 한다는 조건이 있으므로 모두 0을 선택한 1가지의 경우의수를 제외한 값이 answer가 된다.