๐ฉ๐ปโ๐ป๋ฌธ์ ๋งํฌ
[ํ๋ก๊ทธ๋๋จธ์ค 42578] ์์ฅ (Javascript)
โ๏ธIdea Sketch
2021-07-08
1. ๋ฌธ์ ์ดํด
- ๋งค์ผ ๋ค๋ฅธ ์ท์ ์ ์ ๊ฒ
- ํ๊ฐ์ง ์ข ๋ฅ๋ง ์ ์ด๋ ๋จ
- ๊ฐ์ ์ข ๋ฅ์ ์ท์ ๋ฐ๋์ ์ต๋ ํ๋๋ง ์ ์
- ์ด๋ฆ์ด ๊ฐ์ ์ท์ ์กด์ฌํ์ง ์์
2. ๋ก์ง ์ดํด 1
- ์ท ์ข ๋ฅ๋ณ๋ก ๋ช๊ฐ์ง๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ์ ๋ฆฌ : Map()
- ํ๊ฐ์ง๋ง ์ ๊ฑฐ๋, ๋๊ฐ์ง๋ฅผ ์ ๊ฑฐ๋, โฆ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๊ธฐ
3. ๋ก์ง ์ดํด 2 : headgear์ ํด๋นํ๋ ์์์ด yellow_hat, green_turban์ผ ๊ฒฝ์ฐ
- yellow_hat์ ์ ํํ๋ ๊ฒฝ์ฐ, green_turban์ ์ ํํ๋ ๊ฒฝ์ฐ, ์๋ฌด๊ฒ๋ ์ ํํ์ง ์๋ ๊ฒฝ์ฐ
- ์ด 3๊ฐ์ง
- ์๋ฌด๊ฒ๋ ์ ํํ์ง ์๋ ๊ฒฝ์ฐ๋ฅผ ํฌํจ
4. ๊ฒฝ์ฐ์ ์ ๊ตฌํ๊ธฐ
- ๊ณต์งํฉ ํฌํจ ์๋๋ฏ๋ก(์ต์ ํ ๊ฐ์ ์์์ ์ ๋๋ค) -1์ ํด์ค๋ค
- (์ฒซ๋ฒ์งธ ์์ ๊ฐ์ + 1) X (๋๋ฒ์งธ ์์ ๊ฐ์ + 1) X โฆ X (n๋ฒ์งธ ์์ ๊ฐ์ + 1) - 1
5. Map()์ผ๋ก ์ข ๋ฅ๋ณ ์์ ๊ฐ์ ์ ๋ฆฌํ๊ธฐ
let hash = new Map();
clothes.forEach(cloth => {
hash.set(cloth[1], (hash.get(cloth[1]) | 0) + 1);
})
โ๏ธ์์ค์ฝ๋
2021-07-08 ์ ํ์ฑ ํต๊ณผ
function solution(clothes) {
let sum = 1;
let hash = new Map();
clothes.forEach(cloth => {
hash.set(cloth[1], (hash.get(cloth[1]) | 0) + 1);
})
for (let [key, val] of hash) {
sum *= val + 1;
}
return sum - 1;
}
console.log(solution([["yellowhat", "headgear"], ["bluesunglasses", "eyewear"], ["green_turban", "headgear"]]))
โ๏ธ๋ช ๋ต
Map ๋์ Object ์ฌ์ฉ
- sum์ ๊ตฌํ ๋๋ object์์ key๊ฐ๋ง ๋ฐ์์ด
function solution(clothes) {
let sum = 1;
let obj = {};
clothes.forEach(cloth => {
obj[cloth[1]] = (obj[cloth[1]] || 0) + 1;
})
for (let key in obj) {
sum *= (obj[key] + 1);
}
return sum - 1;
}
Object.values()์ reduce() ์ฌ์ฉ
function solution(clothes) {
return Object.values(
clothes.reduce((obj, cloth) => {
obj[cloth[1]] = (obj[cloth[1]] || 0) + 1;
return obj;
}, {}) // reduce์ ์ด๊ธฐ๊ฐ : ๊ฐ์ฒด {}
).reduce((a, b) => a * (b + 1), 1) - 1;
}
console.log(solution([["yellowhat", "headgear"], ["bluesunglasses", "eyewear"], ["green_turban", "headgear"]]))
- Object.values() : value๋ง์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ๋ฆฌํด, for โฆ in ๊ตฌ๋ฌธ๊ณผ ๋์ผํ ์์
const object1 = {
a: 'somestring',
b: 42,
c: false
};
console.log(Object.values(object1)); // output: ["somestring", 42, false]