본문 바로가기
코딩테스트/파이썬

[프로그래머스] 위장(level 2) (파이썬)

by 커피는아아 2021. 5. 18.
반응형

접근

  • 경우의 수를 잘 생각해야 하는 문제
  • 최소한 1개의 옷을 입어야 하므로 모두 안입은 경우를 -1 해야 한다.
  • 각각의 경우의 수에서 옷의 종류는 독립변수로 작용한다.
# 위장 level2
# 3시 57분 ~ 4시 43분

# 경우의 수 문제 종류가 2인 경우 00, 10, 01, 11 2*2 -1(00)

def solution(clothes):
    answer = 1
    
    hmap = dict()
    for i in range(len(clothes)):
        if clothes[i][1] in hmap.keys():
            hmap[clothes[i][1]] = hmap[clothes[i][1]] + 1
        else:
            hmap[clothes[i][1]] = 1
    
    value_list = hmap.values()
    for value in value_list:
        answer *= (value + 1)
    answer = answer - 1
    return answer

def solution2(clothes):
    answer = 1
    
    hmap = {}
    for _, cate in clothes:
        if cate in hmap.keys():
            hmap[cate] = hmap[cate] + 1
        else:
            hmap[cate] = 2
    
    value_list = hmap.values()
    for value in value_list:
        answer *= value

    return answer - 1