DecordRay

[프로그래머스] Level2 : 위장[Python] 본문

알고리즘/프로그래머스

[프로그래머스] Level2 : 위장[Python]

DecordRay 2023. 1. 9. 15:20
728x90
반응형

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42578

 

프로그래머스

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

programmers.co.kr

 

풀이 :

1. 의상 종류별 개수를 세기 위한 딕셔너리 daily_fashion 생성 

2. daily_fashion에 의상 종류별 개수 저장

딕셔너리에 해당 의상 종류가 없을 경우 1로 초기화

딕셔너리에 해당 의상 종류가 있을 경우 기존 개수 +1

3. 의상 종류만큼 반복문 실행하면서 answer에 각 종류별 의상의 개수 + 1을 곱해줌

Ex) "headgear" 종류가 green,blue,yellow 3가지일 경우

green 선택하는 경우,

blue선택하는 경우,

yellow선택하는 경우,

아무것도 선택하지 않는 경우

총 4가지이므로

4. 마지막에 answer - 1을 해줌(모든 옷을 선택 안하는 경우의 수를 빼줘야 하기때문)

 

 

코드 : 

def solution(clothes):
    answer = 1                                                          
    daily_fashion = dict()                                              # 의상 종류별 개수를 세기 위한 딕셔너리 생성
    for i in range(len(clothes)):                                       
        if clothes[i][1] not in daily_fashion.keys():                   # 딕셔너리에 해당 의상 종류가 없을시 생성 후 개수 1로 초기화
            daily_fashion[clothes[i][1]] = 1
        else:                                                           # 딕셔너리에 해당 의상 종류가 있을시 +1
            daily_fashion[clothes[i][1]] += 1
    
    for i in range(len(daily_fashion)):                                 # 의상 종류만큼 반복
        answer *= daily_fashion[list(daily_fashion.keys())[i]]+1        # 의상 종류별 의상의 개수 + 1을 곱해줌(Ex - headgear종류가 green,blue,yellow 3가지일경우 green선택,blue선택,yellow선택,아무것도 선택x 총 4가지이므로) 
    answer -= 1                                                         # 모든 의상을 선택안하는 경우의 수를 빼줘야하므로
    return answer
728x90
반응형
Comments