본문 바로가기

Python/프로그래머스

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

문제 풀이

def solution(clothes):
    answer = 1
    arr = list()
    # 배열 arr에 옷의 종류(key)만 넣어줌
    for val, key in clothes:
        arr.append(key)
	
    # 중복을 제거하기 위해 set을 사용. 이렇게 하면 옷의 종류 하나씩만 남게 됨
    s = set(arr)  
	cnt = list()
    
    # 옷의 개수를 cnt배열에 추가
    for i in s:
        cnt.append(arr.count(i))
	
    # 하단 설명 참조
    for i in cnt:
        answer *= (i + 1)
    answer -= 1
    
    return answer

 

여기에서는 (a+1)(b+1)(c+1)...-1라는 공식을 사용하였습니다.

 예를 들어 headgear가 5개, eyewear가 3개 있다고 해봅시다. headgear 부분에서 5개 중 하나를 고르거나 입지 않는 경우, (5+1)의 식이 탄생합니다. (5(옷의 개수) + 1(입지 않는 경우))가 되겠지요. 이어서 eyewear의 경우에도 (3 + 1)의 식이 나올 수 있지요. 이를 대수식으로 표현하면 (a+1) * (b+1) 의 식이 나옵니다. 

 

다음 줄을 보면 answer에 -1이 붙어있습니다. 이는  "아무것도 입지 않은 경우"를 제외하기 위함입니다.

 

 

 

문제 링크


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

 

코딩테스트 연습 - 위장

 

programmers.co.kr