본문 바로가기
2021/코딩테스트

[프로그래머스] Lv.2 - 위장 (Python)

by 에이도 2020. 12. 29.

 

 

 

programmers.co.kr/learn/courses/30/lessons/42578

 

코딩테스트 연습 - 위장

 

programmers.co.kr

 

1) all_clothes : 의상 종류의 "수" 채워 넣을 리스트     
2) class_clothes : 입력받은 모든 의상 class 리스트      
3) class_clothe  : 입력받은 의상 중복 제외한 class 리스트      
4) 중복 제외 의상 class 리스트 element에서 하나씩 꺼내서 모든 의상 class 리스트에서 개수를 세어 all_clothes에 append 합니다.     
5) all_clothes에서 각 의상 종류의 수 값에 +1 을 더하여 곱하고 마지막에 1을 뺐습니다.  
6) 만약 특정 의상(headgear) 수가 3개, 다른 의상(eyewear)의 수가 5개 라면,   
   두 의상의 조합 = 3x5 = 15가지,  
   하나씩 입을 경우 = 3+5   
   모두 안 입는 경우 = 1   
   따라서 15 +3+5 -1 = (3+1)x(5+1)-1 입니다.   
   따라서 모든 의상 종류의 수에 1을 더해서 k+1의 곱을 만들고 모두 안 입는 경우 1을 빼주었습니다.

 

 

def solution(clothes):

    all_clothes = []
    class_clothes = [j[1] for j in clothes]
    class_clothe = set(class_clothes)
    answer = 1
    
    for i in class_clothe:
        all_clothes.append((class_clothes.count(i)))
        
    answer = 1
    for k in all_clothes:  
        answer *= k+1 
    answer -= 1
    return answer
    
 
print(solution([["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]))
print(solution([["crow_mask", "face"], ["blue_sunglasses", "face"], ["smoky_makeup", "face"]]))

[out]
5
3

 

 

 

처음 시작할때는 2만등 정도 였던걸로 기억하는데 어느덧 1만등을 돌파했습니다..! 

 

 

댓글