https://school.programmers.co.kr/learn/courses/30/lessons/42578
해시 + 간단한 수학 문제이다.
문제는 4개의 의상 종류지만 N개로 확장시키는 아이디어는 수학에 있다.
모든 의상 종류 중 최대 1개씩 고르는 경우의 수를 어떻게 구할까?
"안 고른다" 라는 선택지를 추가하면 된다. 그리고 맨몸은 안되니 -1. 간단하다.
어차피 같은 이름의 의상도 없으니 앞은 더미고, 뒤만 세주면 된다. O(n)이면 해결되는 간단한 문제.
def solution(clothes):
clothes_dict = {}
for c in clothes:
if c[1] not in clothes_dict:
clothes_dict[c[1]] = 1
else:
clothes_dict[c[1]] += 1
answer = 1
for c in clothes_dict:
answer *= (clothes_dict[c] + 1)
return answer-1
'알고리즘 & PS' 카테고리의 다른 글
[프로그래머스] 단어 변환 (Lv 3) (0) | 2024.10.29 |
---|---|
[프로그래머스] 가장 먼 노드 (Lv 3) 2트 (0) | 2024.10.28 |
[프로그래머스] n^2 배열 자르기 (Lv 2) (1) | 2024.10.28 |
[프로그래머스] 석유 시추 (Lv 2) (0) | 2024.10.27 |
[프로그래머스] 거리두기 확인하기 (Lv 2) (0) | 2024.10.27 |