프로그래머스

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

programmers.co.kr

 

✏️ 내가 작성한 코드 

def solution(clothes):
    dic = {}
    sum = 1
    
    # 의상 종류별로 의상이름 리스트 만들어서 넣어주기
    for cloth in clothes:
        if cloth[1] not in dic:
            dic[cloth[1]] = []
        dic[cloth[1]].append(cloth[0])
    
    # 의상 이름 개수 세기 위해 리스트로 만들기
    dicValList = list(dic.values())
    
    for i in range (len(dicValList)):
        # 의상 종류에서 아무것도 안입는 경우의 수 1을 추가
        # 예) 안경, 선글라스, 아무것도 안 입기
        sum *= len(dicValList[i]) + 1
        
    return sum - 1 # 전부 입지 않은 경우의 수 빼야함

 

✏️ 참고  (sum에서 곱할 때 +1 하면서 곱하는 이유?)

선택지를 

dicValList[0] : 동그란 안경, 검정 선글라스, 아무것도 안입기
dicValList[1] : 파란색 티셔츠, 아무것도 안입기
dicValList[2] : 청바지, 아무것도 안입기
dicValList[3] : 긴 코트, 아무것도 안입기

이런식으로 구성한다고 생각하며 +1를 하였다.

 

그 이유는 예를 들어 의상을 구성할 때

동그란 안경 +  파란색 티셔츠

동그란 안경 + 아무것도 안입기

이런식으로 구성이 가능하기때문에 1개(동그란 안경)만 의상을 착용한 경우도 나타낼 수 있다.

단, 아무것도 안입기 +  아무것도 안입기 +  아무것도 안입기 +  아무것도 안입기 도 sum에 포함되기 때문에 

이건 빼줘야하므로 -1을 하면서 return한다.

+ Recent posts