[프로그래머스] Hash 2
프로그래머스 해시 Lever 2 - 위장
풀이
function solution(clothes) {
var answer = 1;
let category = "";
const obj = {};
for (let i = 0; i < clothes.length; i++) {
category = clothes[i][1];
if (!obj[category]) {
obj[category] = clothes.filter(el => el[1] === category).length + 1;
}
}
const objKeys = Object.keys(obj);
objKeys.forEach(el => answer *= obj[el]);
return answer - 1;
}
- Object key, value 형태로 카테고리(key)마다 옷 종류의 수(value)를 구함
- 총 경우의 수 = ((각 카테고리의 옷 종류의 수 + 1)를 모두 곱함) - 1
- (각 카테고리 옷 종류의 수에 + 1) 을 하는 이유는 해당 카테고리를 착용하지 않을 경우도 있기 때문에
- 마지막에 -1 을 하는 이유는 모든 카테고리를 착용하지 않을 경우는 없기 때문에
다른 사람의 풀이
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;
}
- Object key, value 형태로 카테고리 별로 종류의 수를 구하여 경우의 수를 구하는 접근 방법은 비슷했다
- 하지만 Array.reduce, Object.values 등 메서드를 활용하여 코드를 좀 더 간결하고 함수형 프로그래밍으로 작성하는 부분에서 차이가 났다
- 앞으로 나도 해당 부분을 신경써서 작성할 것!!
Author And Source
이 문제에 관하여([프로그래머스] Hash 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mandarinduk/프로그래머스-Hash-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)