개요
- 이제 좀 알거같은데. 의상은 중복이 되지 않으므로 갯수만 중요해진다. 다루기 편한 객체로 변경하는 작업 진행
- 답은 구하는 게 아차 싶은데, 확률과 통계를 다 까먹어서 좀 헤맸다.
JS CODE (1) - 내 풀이
function solution(clothes) {
let answer = 1;
const clothes_obj = clothes.reduce((result, value) => {
result[value[1]] = result[value[1]]? result[value[1]] + 1 : 2;
return result;
}, {});
for (let key in clothes_obj) {
answer *= clothes_obj[key];
}
return answer - 1;
}
- reduce 메서드에 슬슬 적응이 되는 중. 네번째 줄에 2로 설정한 이유는, 옷이 두벌이면 입는 경우의 수는 3가지이기 때문
- answer에 -1 해준 것 또한 문제에 명시된대로 다벗는 경우를 제외한 것
JS CODE (2) - 프로그래머스 우수 풀이
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;
}
- 메서드 체이닝을 이용해 reduce메서드를 두번 작성.
- 이게 가능한 이유는 Object.values 덕분인데, 위에 내 코드에서처럼 다루기 쉽게 객체를 구한 후, 객체의 value만 모아 배열로 반환한 후에 reduce 메서드를 다시 실행.
'알고리즘 > 해시' 카테고리의 다른 글
[JavaScript] Programmers 베스트 앨범 (0) | 2022.05.03 |
---|---|
[JavaScript] Programmers 완주하지 못한 선수 (0) | 2022.05.03 |