프로그래머스
ex. const hash = {headgear: 2, eyewear:3}
키-값
형태로 옷종류-개수
를 저장한다. function solution(clothes){
const hash = clothes.reduce((acc,cur) => {
acc[cur[1]] = acc[cur[1]] ? acc[cur[1]]+1 : 1;
return acc;
},{});
let answer = 1;
for(const el in hash){
answer *= hash[el] + 1;
}
return answer - 1;
}
obj[el[1]] = (obj[el[1]] || 0) +1;
obj[el[1]]
값이 undefined이면 0, 값이 있으면 obj[el[1]]
을 할당한 뒤 1을 더해준다. 이 부분은 삼항연산자로 작성한 부분과 같은 역할을 하는데, ||
를 사용해서 작성한 부분이 새로웠다. function solution(clothes) {
let answer = 1;
const obj = {};
for(let el of clothes){
obj[el[1]] = (obj[el[1]] || 0) +1;
}
for(let key in obj){
answer *= (obj[key]+1);
}
return asnwer -1;
}
배열은 선형탐색을 해서 O(n)의 시간복잡도가 걸리는 반면 객체를 사용하면 O(1)로 원하는 키값을 검색할때 효율적이다.
완주하지 못한 선수에서도 객체를 활용해서 풀었는데, 카테고리/유형별로 개수나 값을 저장할때 활용할 수 있을 것 같다.