본문 바로가기

취준/프로그래머스

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

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

 

코딩테스트 연습 - 위장 | 프로그래머스

 

programmers.co.kr

이 문제도 역시 Dictionary, 해쉬맵을 써서 풀면 되는 문제다.

처음에는 ( 의상 종류, 의상 이름) 으로 dictionary에 넣는다. 

그 다음이 중요한데,

  1. 각 의상중에 하나 이상만 쓰면 되니까, 어떤 의상 종류는 안쓸수 있다.
    1. 근데 또, 다 안쓸수는 없다.
    2. 따라서, (나같은 경우에는) "" 을 각 의상 종류에다 넣어서 안입는 null value 를 넣었다.(closet[k].append("") ) 
  2. 이제 각 의상 종류를 모두 곱한 값이 총 방법의 갯수인데, 빼먹은게 하나있다.
    1. 1-2 에서 null value를 넣었으니 전체가 null value 인 세트도 하나 나올거고, 이건 빼줘야한다.
  3. 그래서 최종 정답은 -> 각 의상종류 개수 곱 - 1(하나도 안쓴거)

 

def solution(clothes):

    closet = dict()
    for c in clothes:
        if c[1] not in closet:
            closet[c[1]] = [c[0]]
        else:
            closet[c[1]].append([c[0]])

    for k in closet.keys():
        closet[k].append("")


    answer = 1
    for v in closet.values():
        answer = answer*len(v)

    answer-=1
    return answer