🔗 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/42578
✏️ 풀이
function solution(clothes) {
const clothList = clothes.reduce((acc, [, type]) => {
acc[type] = (acc[type] || 0) + 1;
return acc;
}, {});
return Object.values(clothList).reduce((acc, v) => acc * (v + 1), 1) - 1;
}
옷의 종류별 개수를 구하고, (각 종류별 개수 + 1)을 모두 곱한 것에서 1을 빼면 정답이다.
각 종류별로 옷을 고를 때, 해당 종류의 옷을 입지 않는 경우 1개도 포함하기 위해서 (각 종류별 개수 + 1)를 곱하였다.
(각 옷의 종류별 개수 + 1)을 모두 곱하면 옷을 입는 모든 경우의 수를 구할 수 있고, 문제 조건에서 옷은 반드시 1개 이상은 입기 때문에 아무 옷도 입지 않은 경우의 수 1개를 빼야 한다.
'연습장 > 프로그래머스 문제풀이' 카테고리의 다른 글
[프로그래머스 Level 3] 네트워크 - JavaScript (0) | 2022.06.09 |
---|---|
[프로그래머스 Level 2] 문자열 압축 - JavaScript (0) | 2022.05.25 |
[프로그래머스 Level 2] 뉴스 클러스터링 - JavaScript (0) | 2022.05.16 |
[프로그래머스 Level 2] 오픈채팅방 - JavaScript (0) | 2022.05.13 |
[프로그래머스 DFS/BFS] 타겟 넘버 - JavaScript (0) | 2022.05.10 |