동까의 코딩

[python] 프로그래머스 - 의상 본문

문제 풀이/프로그래머스

[python] 프로그래머스 - 의상

동까의 코딩 2025. 3. 12. 10:32
반응형

위장 문제 풀이: 해시맵을 활용한 조합 계산

프로그래머스의 의상 문제는 주어진 옷들의 조합을 통해 가능한 경우의 수를 계산하는 문제입니다.
각 옷 종류별로 선택할 수 있는 경우의 수는 해당 종류의 옷 개수에 1을 더한 값이며, 모든 경우의 수를 곱한 후, 아무것도 선택하지 않는 경우를 제외한 값을 반환합니다.


풀이 과정

  1. 딕셔너리 생성:
    입력으로 주어진 clothes 리스트를 순회하며, 옷의 종류를 key로 하고, 해당 종류에 속하는 옷의 이름을 리스트에 저장합니다.

  2. 조합 계산:
    각 옷 종류별로 선택할 수 있는 경우의 수는 len(옷 리스트) + 1입니다.
    이를 모든 옷 종류에 대해 곱한 값을 구합니다.

  3. 결과 도출:
    최종적으로 모든 경우의 수에서 아무것도 선택하지 않는 경우(1)를 빼서 결과를 반환합니다.


코드 구현

def solution(clothes):
    answer = 1
    hashmap = {}
    for value, key in clothes:
        # 중복되는 키가 등장하면 value 값을 더해준다.
        if key in hashmap.keys():
            hashmap[key] += [value]
        # 중복되지 않는 키 값이 등장하면 새로 만들어 줌.
        else:
            hashmap[key] = [value]
    # 각 옷 종류별 선택 가능한 경우의 수(자기 자신 포함)를 곱해준다.
    for _, value in hashmap.items():
        answer *= (len(value) + 1)

    return answer - 1
    ```
반응형