[프로그래머스 Lv2] 위장(python)

이진규·2022년 2월 28일
1

프로그래머스(PYTHON)

목록 보기
30/64

문제

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

나의 코드 (답안참조)

"""
1. 아이디어
해시를 활용한 풀이

2. 시간복잡도

"""

def solution(clothes):
    
    # 1. 옷을 종류별로 구분하기
    hash_map = {}
    for name, type in clothes:
        hash_map[type] = hash_map.get(type, 0) + 1
    
    # 2. 입지 않는 경우를 추가하여 모든 조합 계산하기
    answer = 1
    for type in hash_map:
        answer *= (hash_map[type] + 1)
        
    # 3. 아무종류의 옷도 입지 않는 경우 제외
    return answer - 1
    

설명

  1. 옷을 종류별로 구분하기
  • HashMap이란 Key-Value의 Pair를 관리하는 Dictionary이다.

  • 이 문제에서 Key는 옷의 종류가 되고, Value는 해당 옷 종류의 가짓수(count)를 의미한다.

  • HashMap.get(type, 0)
    이 함수는 만약 'A'라는 Key에 해당하는 Value가 있으면 가져오고, 아닐 경우 0을 Default로 지정하여 사용하겠다는 의미의 함수이다.

  • Value는 곧 옷 종류의 가짓수가 되기 때문에, 이전에 값이 있었으면 기존 값에 + 1을 하면 되고, 없었으면 1을 입력하면 된다.

다시 풀이한 코드

주석 처리된 부분을 잘 봐야함.
옷의 개수를 해시에 추가 해줄때 초기값은 2임. (해당 옷을 입지 않는 경우)
그리고 마지막엔 -1을 해줘야 함. (모든 옷은 입고 있지 않는 경우는 없다고 문제에 명시되어 있기 때문에)

참고자료

https://coding-grandpa.tistory.com/88

profile
항상 궁금해하고 공부하고 기록하자.

0개의 댓글