https://programmers.co.kr/learn/courses/30/lessons/42578
function solution(clothes) {
return Object.values(clothes.reduce((obj, t)=> {
obj[t[1]] = obj[t[1]] ? obj[t[1]] + 1 : 1;
return obj;
} , {})).reduce((a,b)=> a*(b+1), 1)-1;
}
- 풀다가 간단하게 어떻게 푸는지 모르겠어서 인터넷 찾아보고 답을 찾아서 풀었다...
- clothes 에서 각각의 key 값 검색 ( t[1] )
- 빈 object( 초기값: {} ) 에 기존 key 값( 해당하는 옷 종류 )이 존재하면 개수를 +1 해주고 없으면 1개를 시작으로 새로 만들어줌
- Object.values로 value값만 Array 로 return → value: 해당 옷 종류의 서로 다른 옷 개수 ex. [ A종류개수, B종류개수, C종류개수...]
- 초기값을 1로 시작해서 옷 입는 경우의 수 계산. ※ 하나의 옷만 입을 수 있으므로 옷종류개수+1 을 곱해줘야 함. → 1*(A종류개수+1)*(B종류개수+1)*(C종류개수+1)*....
- 옷을 아예 입지 않는 경우는 없으므로 전체 경우의 수에서 -1
- Object.values : Obj에서 value값들로만 이루어진 array를 return
- Array.reduce( (누적값, 현재값, 현재값index, array) => { return } , 초기값 )
- 누적값, 현재값은 Required
- 현재값index, array는 optional
- 초기값은 안 쓰면 array의 첫번째 값이 default
반응형
'알고리즘 > javascript' 카테고리의 다른 글
[프로그래머스] 코딩테스트연습 > 로또의 최고 순위와 최저 순위 (0) | 2021.09.29 |
---|---|
[프로그래머스] 코딩테스트연습 > 완전탐색 > 모의고사 (0) | 2021.09.27 |
[프로그래머스] 코딩테스트연습 > 정렬 > K번째 변수 (0) | 2021.09.25 |
[프로그래머스] 코딩테스트연습 > 스택/큐 > 기능개발 (0) | 2021.09.25 |
[프로그래머스] 코딩테스트연습 > 해시 > 완주하지 못한 선수 (0) | 2021.09.24 |