본문 바로가기
Problem Solving

[프로그래머스] 위장 / python

by 감사쟁이야 2022. 1. 4.

1️⃣ 문제 설명

 

코딩테스트 연습 - 위장

 

programmers.co.kr

스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장한다.

스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때

서로 다른 옷의 조합의 수를 return

  • clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다.
  • 스파이는 하루에 최소 한 개의 의상은 입습니다.

2️⃣ 풀이 전 계획과 생각

  • 입력값을 받아 딕셔너리에 저장
  • 각 의상의 종류의 갯수를 다 곱한다.또한 모두 안 입는 경우는 없다고 했으니 최종 곱한 값 -1 하기
  • How? 각 경우를 다 곱해주면 된다. 각 의상의 종류별로 아무것도 안 입는 경우가 있으니 각 의상 종류마다 의상의 갯수+1 한다.

3️⃣ 풀이

def solution(clothes):
    closet = {}
    result = 1
    
    for clothe in clothes:
        key = clothe[1]
        value = clothe[0]
        if key in closet:
            closet[key].append(value)
        else:
            closet[key] = [value]

    for key, value in closet.items():
        result *= len(value)+1
    result -= 1    
    return result

4️⃣ 풀이 후 알게된 개념과 소감

  • 처음에는 안 입는 경우의 수를 떠오르지가 않았다.
  • → 입력값을 보며 경우의 수를 파악해보니, 안하는 경우의 수도 한가지의 경우의 수임을 알게 되었고, 추가해주었다.
  • 해쉬테이블 저장 :
    • key값이 초기화 되지 않은 경우 → hashtable[key] = value
    • 그외 → hashtable[key].append(value)