본문 바로가기

카테고리 없음

[프로그래머스 LV2]의상_파이썬

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

 

프로그래머스

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

programmers.co.kr

1. 문제 단순화 하기

- 문제를 단순화 하여 어떻게 이 문제를 해결할 것인가가 가장 중요합니다.

- 해당 문제는 여러 종류의 옷, 그것을 각 종류별로 1개씩 이하 입기가 가능합니다.

 

코드적으로 시간복잡도를 가장 적게 종류를 탐색해서 구현하는 방법은 hash라고 생각을 하였습니다.

testcase 1번을 종류별로 해쉬화를 하면

종류 수량
headgear 2
eyewear 1

이렇게 나옵니다.

그러면 각 type마다의 경우의 수를 보겠습니다.

먼저 headgear인 경우.

1. 1번 headgear를 입는다.

2. 2번 headgear를 입는다.

3. 아무것도 입지 않는다.

총 3개의 경우가 나옵니다.

eyewear의 경우

1. eyewear를 입는다.

2. 아무것도 입지 않는다.

총 2개의 경우가 나옵니다

이렇게 경우마다의 수를 곱해주고 전부 입지않는 경우도 경우에 포함되어 있으니까 -1를 해줍니다.

실행코드입니다.

def solution(clothes):
    hash_map = {}
    # 옷을 해시화
    for cloth, type in clothes:
        hash_map[type] = hash_map.get(type, 0) + 1
    # 아무것도 입지않은 경우를 추가
    answer = 1
    for type in hash_map:
        answer *= (hash_map[type] + 1)
    
    
    return answer - 1