본문 바로가기
카테고리 없음

[프로그래머스] 해시 - 위장(파이썬 문제풀이)

by j-y 2021. 4. 1.
반응형

문제 링크

 

코딩테스트 연습 - 위장

 

programmers.co.kr

 

간단한 수학 공식을 이용해 문제를 풀이했습니다. 각 옷의 종류마다 몇 개의 옷을 가지고 있는지 구하고 그 수를 모두 곱하면 그 수들을 조합한 경우의 수가 나오게 됩니다.

 

하지만 이렇게 계산하면 해당 옷의 종류가 포함되지 않았을 때의 경우의 수가 빠지게 되므로 (해당 옷의 종류 + 1)을 해준 값을 곱해야 원하는 결과가 나옵니다.

 

또 문제에서 반드시 한 개의 의상을 착용해야한다고 했으므로 모두 안입었을 경우의 수 하나를 최종 값에서 빼주어야 합니다.

 

다른 분들 코드를 보니 딕셔너리를 사용할 때 분기문으로 해당 키값이 현재 딕셔너리에 포함되어있나 확인하는 코드를 넣었는데, 저는 딕셔너리의 내장 함수 get을 이용하여 따로 분기 처리를 하지 않았습니다!

 

문제 풀이(파이썬)


def solution(clothes):
    res = dict()

    for c in clothes:
        res[c[1]] = res.get(c[1], 0) + 1

    cnt = 1
    for i in res.values():
        cnt *= (i+1)

    return cnt - 1
반응형

댓글