알고리즘

[프로그래머스] 의상(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가 된다.