본문 바로가기

개발/algorithm

[프로그래머스] [level2] 위장 - python

우연히 프로그래머스 스킬 체크를 발견하여 풀어보았다. 

항상 예제만 풀었지 실제처럼 시간을 재고 풀어본 적은 없었는데 

level1은 무난하게 합격했지만 

level2는 3번이나 불합격했다..... 

그래프나 dp 문제에 집중하느라 스택이나 해시 문제를 소홀히 한 것 같아 

다시 풀어보기로 했다. 

프로그래머스는 defaultdict 라이브러리를 사용하는 문제가 많이 나오는 것 같다. 

 

문제 링크

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

 

코딩테스트 연습 - 위장

 

programmers.co.kr

 

풀이 

- 가능한 경우의 수는 아이템 종류의 개수 + 1(선택하지 않을 경우의 수) 를 모두 곱한 후

모두 다 선택하지 않는 경우를 제외해야하므로 -1를 해주면 된다.

- defaultdict(int)를 사용하여 아이템 종류 별 개수를 기록해주었다. 

from collections import defaultdict

def solution(clothes):
  answer = 1
  dic = defaultdict(int)
  for i in clothes:
    dic[i[1]] += 1 

  for i in dic.values():
    answer *= (i+1)
  
  return answer-1