티스토리 뷰
https://programmers.co.kr/learn/courses/30/lessons/42578
from collections import defaultdict
def solution(clothes):
answer = 1
clothing=defaultdict(int)
for name, kind in clothes:
clothing[kind]+=1
for kind in clothing:
answer*=(clothing[kind]+1);
return answer-1;
처음엔 옷 종류 조합을 구해서 각 옷 종류 별 수를 곱해주려다가, 조합을 사용하니 1번 테케에서 시간초과가 발생했다.
그래서 조합을 사용하지 않고, (옷 종류 별 옷 수+1) 를 옷 종류 별로 다 곱해준다. +1 해준것은 해당 옷 종류를 입지 않을 경우다. 다 곱해준 경우의 수에서 다 입지 않을 1가지 경우의 수를 빼면 시간초과가 나지 않고 답이 잘 나온다.
'Problem Solving' 카테고리의 다른 글
[프로그래머스] 가장 큰 수 (C++) (0) | 2021.10.21 |
---|---|
[프로그래머스] 카펫 (C++) (0) | 2021.10.21 |
[BOJ 19236] 청소년 상어 (C++) (0) | 2021.10.20 |
[BOJ 21608] 상어 초등학교 (C++) (0) | 2021.10.18 |
[BOJ 17779] 게리맨더링 2 (C++) (0) | 2021.10.18 |