Lv2. 위장 Javascript
https://programmers.co.kr/learn/courses/30/lessons/42578
function solution(clothes) {
const list = new Map();
clothes.forEach(item => {
if (list.has(item[1])) {
list.set(item[1], list.get(item[1]) + 1)
} else {
list.set(item[1], 1)
}
})
let arr = []
list.forEach((item) => {
arr.push(++item)
})
const answer = arr.reduce((acc, cur) => {
return acc * cur
}, 1)
return answer - 1
}
function solution(clothes) {
const list = new Map(); // map 초기화
clothes.forEach(item => {
// clothes를 돌면서 item[i]가 있으면 ++, 없으면 1로 세팅
if (list.has(item[1])) {
list.set(item[1], list.get(item[1]) + 1)
} else {
list.set(item[1], 1)
}
})
// map의 값들에 +1을 한 값들을 arr에 push
// => 각각을 착용하는 경우의 수에 착용하지 않는 경우가 있기 때문에 +1
let arr = []
list.forEach((item) => {
arr.push(++item)
})
// reduce로 요소들을 모두 곱한 후 => 경우의 수이기 때문에 모두 곱함
const answer = arr.reduce((acc, cur) => {
return acc * cur
}, 1)
// -1한 값을 return => 모두 안입는 경우를 제외
return answer - 1
}
// 1
function solution(clothes) {
let answer = 1;
const obj = {};
for(let arr of clothes) {
obj[arr[1]] = (obj[arr[1]] || 0) + 1; // 있으면 +1, 없으면 1 할당
}
for(let key in obj) {
answer *= (obj[key]+1);
}
return answer - 1;
}
// 2
function solution(clothes) {
let key = new Map()
for(let i = 0 ; i < clothes.length ; i ++){
if(key.has(clothes[i][1])){
key.set(clothes[i][1], key.get(clothes[i][1])+1)
}else{
key.set(clothes[i][1],1)
}
}
let answer = 1
for(let a of key.values()){
answer *= (a+1)
} // for of는 map도 순회 가능함!!!
return answer-1
}
for(let a of key.values())
와 같이 값을 바로 받을 수 있음.||
을 이용한 if문 대체obj[arr[1]] = (obj[arr[1]] || 0) + 1;
와 같이||
)'은 처음 만나는 true
값을 return
한다는 속성을 이용댓글 환영
질문 환영
by.protect-me