๐ ๋ฌธ์
1๏ธโฃ ์ฒซ๋ฒ์งธ ํ์ด ๊ณผ์
function solution(name, yearning, photo) {
let mapPhoto = photo.map((p)=>{
let answer = [];
p.map((e)=>{
name.map((n)=>{
return e ===n ? answer.push(e) : e
})
});
return answer
})
let val = {};
for(let i=0; i< name.length; i++){
val[name[i]] = yearning[i]
}
let ansans = mapPhoto.map((a)=>{
let newA = a.reduce((acc,acu)=>{
return acc + val[acu]
}, 0)
return newA
})
return ansans;
}
let n = ["may", "kein", "kain", "radi"];
let y = [5, 10, 1, 3];
let p = [["may", "kein", "kain", "radi"],["may", "kein", "brin", "deny"], ["kon", "kain", "may", "coni"]];
solution(n, y, p)
//๊ฒฐ๊ณผ๊ฐ [19, 15, 6]
- name์ ์์์ ๊ฐ์์ง ๋น๊ตํด์ผ ํ๊ธฐ ๋๋ฌธ์, photo ์ ์๋ ์์ ๋ฐฐ์ด๋ค์ map์ ์ด์ฉํด ํ๋ํ๋ ๊บผ๋ด์ฃผ์๋ค.
- ์์ ๋ฐฐ์ด๋ค์ ๊ฐ ์์๋ค๋ map์ ์ด์ฉํด์ ๊บผ๋ด์ฃผ์๋ค.
- ์์ ๋ฐฐ์ด์ ์์์์๊ฐ, name์ ๊ฐ ์์๋ค๊ณผ ๋์ผํ์ง ์๊ธฐ ์ํด map ๋ฐ๋ณต๋ฌธ์ ๋๋ ค์ฃผ์๋ค.
- name์ ์์์, ์์ ๋ฐฐ์ด์ ์์๊ฐ ๋์ผํ ์ ๋ค๋ง ๋ด๊ธฐ ์ํด์ ๋น ๋ฐฐ์ด answer๋ฅผ ๋ง๋ค์ด ์ฃผ์๋ค.
- map ๋ฐ๋ณต๋ฌธ ์์์๋ ์์ ๋ฐฐ์ด์ ์์์, name์ ์์๊ฐ ๋์ผํ ๊ฒฝ์ฐ, answer์ ํด๋น ์์๋ฅผ ๋ฃ์ด์ฃผ์๊ณ ๋ฆฌํดํด์ mapPhoto์ ๋ด์์ฃผ์๋ค..
- ์ด๋ฆ์ ํด๋นํ๋ ์ซ์๋ฅผ ํค ๋ฒจ๋ฅ ํํ๋ก ์ ์ฅํ๊ธฐ ์ํด ๋น obj๋ฅผ ๋ง๋ค์ด ์ฃผ์๋ค.
- name์ ๊ธธ์ด๋งํผ ๋ฐ๋ณตํ๋ฉฐ, ์ด๋ฆ์ i๋ฒ์งธ๋ฅผ ํค๋ก, yearning์ i๋ฒ์งธ๋ฅผ ๊ฐ์ผ๋ก ๋ฃ์ด์ฃผ์๋ค.
- ์๋กญ๊ฒ ์ถ๋ฆฐ ๋ฐฐ์ด mapPhoto์ ์์ ํ๋ํ๋๋ฅผ ๋ฐ๋ณตํ๋ฉฐ ์๋กญ๊ฒ ๋ฐฐ์ด์ ๋ง๋ค์ด ์ค๊บผ๋ผ map์ ์ฌ์ฉํ๋ค.
- ์์ ํ๋ํ๋๋ฅผ reduce ๋ฐ๋ณต๋ฌธ์ ํ์ฉํด ํด๋นํ๋ ์ซ์๋ค์ ๋ชจ๋ ๋ํด์ฃผ์๋ค.
๐จ ๋ฌธ์ ์
๐ map์ ์๋ฌด ์๊ฐ์์ด ๋ชจ๋ ๊ณณ์ ์ป๋ค.
map์ด๋ผ๋ ์ ๋ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ด๋ณด๋ด์ฃผ๋ ์ ์ธ๋ฐ,
๋จ์ ๋ฐ๋ณต๋ฌธ๋ง์ด ํ์ํ ๊ณณ์์ ์กฐ์ฐจ map์ ์ฌ์ฉํ๋ค.
์ฒ์์ answer ์ด๋ผ๋ ๋ฐฐ์ด์ ๋ง๋ค์ง ์๊ณ , ๋จ์ํ ์ผํญ์ฐ์ฐ์๋ก ๋ฆฌํดํ๋๋ฐ, ์ค๋ฅ๊ฐ ๋์๋ค.
์๊ณ ๋ณด๋ 3์ค๋ฐฐ์ด์ ๋ง๋ค๊ณ ์์๋๊ฒ....ใ
answer ์ด๋ผ๋ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ๊ทธ๊ณณ์ ๋ฃ์ด์ฃผ๋ฉด์, return p.map() ์ด ์๋ return answer์ด ๋์ ๊ฐ์ด ์ ๋์๋ค.
p.map() ๋ถํฐ return answer ๊น์ง๋ ๊ตณ์ด map์ ์ฌ์ฉํ ํ์๋ ์์๊ณ , ์ฌ์ค ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์์๋ค.
2๏ธโฃ ๋๋ฒ์งธ ํ์ด ๊ณผ์
function solution(name, yearning, photo) {
let obj = {};
name.forEach((e,i)=> obj[e] = yearning[i])
let answer = photo.map((p)=>{
let num = p.map((sp)=>{
return obj[sp] ? obj[sp] : 0
})
let redu = num.reduce((acc, acu)=>{
return acc+ acu;
},0);
})
return answer;
}
let n = ["may", "kein", "kain", "radi"];
let y = [5, 10, 1, 3];
let p = [["may", "kein", "kain", "radi"],["may", "kein", "brin", "deny"], ["kon", "kain", "may", "coni"]];
solution(n, y, p)
//๊ฒฐ๊ณผ๊ฐ [19, 15, 6]
๋ค๋ฅธ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๋ค๊ฐ ๋ฌด๋ฆ์ ํ ์น๊ณ ๋ฐ๋ผ ํ์ด๋ดค๋ค.
๋ฐ๋ณต๋ฌธ์ ์ด 6๋ฒ์ด๋ ์ฌ์ฉํ ๋์๋ ๋ค๋ฅด๊ฒ,,
4๋ฒ์ผ๋ก ๋๋ฌ๋ค...?
์ด๋ง์ ๋ด ์ฝ๋์ ์๋ฏธ์๋ ๋ฐ๋ณต๋ฌธ์ด ๋ง์๋ค๋ ๋ง์ด๋ค. ๐ฟ๐ฟ
์ฝ๋๋ฅผ ๋ฏ์ด ๋ณด๋ฉด,
- name์ ํด๋นํ๋ ์ซ์๋ฅผ ์ง์ง์ด ์ฃผ๊ธฐ ์ํด obj ๋ฅผ ๋ง๋ค์ด ์ค๋ค.
- name์ forEach ํ๋ฉด์ obj์ ๊ฐ name๊ณผ ์ซ์๋ฅผ ํค ๋ฒจ๋ฅ๋ก ๋ฃ์ด์ค๋ค.
- photo๋ผ๋ ํฐ ๋ฐฐ์ด์ map ํ๋ฉด์ ๋ณ์ answer์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ด๋ณด๋ผ ์ค๋น๋ฅผ ํด์ฃผ๊ณ
- ๊ทธ ์์ ์์์ธ p๋ map ํ๋ฉด์ ๋ณ์ num์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ด๋ณด๋ผ ์ค๋น๋ฅผ ํ๋ค. .
- photo์ ์์ ๋ฐฐ์ด์ ๊ฐ ์์๋ค์ด obj ์ ํค๋ก ์กด์ฌํ๋ค๋ฉด, obj์ ํค์ ๋ํ ๊ฐ. ์ฆ name์ ํด๋นํ๋ ์ซ์๋ฅผ ๋ฆฌํด
- ๊ทธ๊ฒ ์๋ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์์๋ก 0์ ๋ฆฌํดํ๋ค.
- num ์ ๊ฒฝ์ฐ [5, 10, 0, 0] ์ด๋ฐ์์ผ๋ก ๋์จ๋ค.
- ์๋กญ๊ฒ ์ ๋ฆฌ๋ ์์ ๋ฐฐ์ด๋ค num์ ๊ฐ์ง๊ณ reduce๋ฅผ ์ด์ฉํด ๊ฐ์ ๋์ฐํ๋ฉฐ ๋ํด์ค๋ค.
- ์ด๋ ๊ฒ ์ ๋ฆฌ๋ redu ๋ฐฐ์ด๋ค์ answer์ ๋ด์์ ๋ฆฌํดํด ์ค๋ค.
์ ์ฌ์ฉํ๋์ง์ ๋ํ ๊ณ ๋ฏผ์ ์ถฉ๋ถํ ํ๊ณ ์ฌ์ฉํด์ผ ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ ๋ค..
์ฝ์ง ์๊ฒ ์ง๋ง ํญ์ ๊ณ ๋ฏผํ๋ฉด์ ์ฌ์ฉํด์ผ ๊ฒ ๋ค..๐
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
23/10/20 TIL __ .focus() (0) | 2023.10.20 |
---|---|
23/10/19 TIL __ ๊ฒ์๊ธฐ๋ฅ_ ์ ์ด์ฟผ๋ฆฌ ์์ด ์์ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ (0) | 2023.10.19 |
23/10/17 TIL __ ๋งํฌ๋ ๋ฆฌ์คํธ (0) | 2023.10.17 |
23/10/16 TIL __ ๋น๋๊ธฐ์ ์ฒ๋ฆฌ (promise, generator, async/await) (2) | 2023.10.16 |
23/10/15 TIL __ .call() / .apply() / .bind() (1) | 2023.10.15 |