์ฌ์ง๋ค์ ๋ณด๋ฉฐ ์ถ์ต์ ์ ์ด ์๋ ๋ฃจ๋ ์ฌ์ง๋ณ๋ก ์ถ์ต ์ ์๋ฅผ ๋งค๊ธธ๋ ค๊ณ ํฉ๋๋ค. ์ฌ์ง ์์ ๋์ค๋ ์ธ๋ฌผ์ ๊ทธ๋ฆฌ์ ์ ์๋ฅผ ๋ชจ๋ ํฉ์ฐํ ๊ฐ์ด ํด๋น ์ฌ์ง์ ์ถ์ต ์ ์๊ฐ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ง ์ ์ธ๋ฌผ์ ์ด๋ฆ์ด ["may", "kein", "kain"]์ด๊ณ ๊ฐ ์ธ๋ฌผ์ ๊ทธ๋ฆฌ์ ์ ์๊ฐ [5์ , 10์ , 1์ ]์ผ ๋ ํด๋น ์ฌ์ง์ ์ถ์ต ์ ์๋ 16(5 + 10 + 1)์ ์ด ๋ฉ๋๋ค. ๋ค๋ฅธ ์ฌ์ง ์ ์ธ๋ฌผ์ ์ด๋ฆ์ด ["kali", "mari", "don", "tony"]์ด๊ณ ["kali", "mari", "don"]์ ๊ทธ๋ฆฌ์ ์ ์๊ฐ ๊ฐ๊ฐ [11์ , 1์ , 55์ ]]์ด๊ณ , "tony"๋ ๊ทธ๋ฆฌ์ ์ ์๊ฐ ์์ ๋, ์ด ์ฌ์ง์ ์ถ์ต ์ ์๋ 3๋ช ์ ๊ทธ๋ฆฌ์ ์ ์๋ฅผ ํฉํ 67(11 + 1 + 55)์ ์ ๋๋ค.
๊ทธ๋ฆฌ์ํ๋ ์ฌ๋์ ์ด๋ฆ์ ๋ด์ ๋ฌธ์์ด ๋ฐฐ์ด name, ๊ฐ ์ฌ๋๋ณ ๊ทธ๋ฆฌ์ ์ ์๋ฅผ ๋ด์ ์ ์ ๋ฐฐ์ด yearning, ๊ฐ ์ฌ์ง์ ์ฐํ ์ธ๋ฌผ์ ์ด๋ฆ์ ๋ด์ ์ด์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด photo๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ฌ์ง๋ค์ ์ถ์ต ์ ์๋ฅผ photo์ ์ฃผ์ด์ง ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ returnํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
function solution(name, yearning, photo) {
let answer = [];
for(let i = 0; i < photo.length; i++){
answer.push(0)
for(let j = 0; j < photo[i].length; j++){
if(name.indexOf(photo[i][j]) !== -1){
answer[i] += yearning[name.indexOf(photo[i][j])]
}
}
}
return answer;
}
์ฐ์ ์ ๋ต์ผ๋ก ๋ฐํํ answer
๋ฐฐ์ด์ ํ๋ ์์ฑํ๋ค.
photo
๋ฐฐ์ด์ด ์ด์ฐจ์ ๋ฐฐ์ด์ธ๋ฐ, ์ง๊ธ ์ ํ ์ฌํญ์ ๋ดค์ ๋ ์ค๋ณต for
๋ฌธ์ ์ฌ์ฉํด๋ ๋ฌธ์ ์์ ๊ฑฐ ๊ฐ์์ ์ค๋ณต for
๋ฌธ์ ์ฌ์ฉํ๋ฉด์ ๋์๋ค.
์ผ๋จ ์ด๊ธฐํ๋ init ๊ฐ 0
์ answer
์ ๋ฃ์ด์ฃผ๊ณ , ๊ทธ answer
๊ฐ์ photo
์ ํ ํ์ ์ ์๋ฅผ ํฉ์ฐ์ํจ๋ค.
photo
์ ๊ฐ ํ์ ๋ด๋ถ for
๋ฌธ์ผ๋ก ๋๋๋ฐ, ๋ง์ฝ name
๋ฐฐ์ด์ ๊ทธ ๊ฐ์ด ์กด์ฌํ๋ฉด(์ฆ ์ ์ ๋งค๊ธธ ์ ์๋ค๋ฉด) answer[i]
์ yearning[name์์์ ์ธ๋ฑ์ค]
๊ฐ์ ํฉ์ฐํ๋ค.
function solution(name, yearning, photo) {
return photo.map((v)=> v.reduce((a, c)=> a += yearning[name.indexOf(c)] ?? 0, 0))
}
๋ก์ง์ ๋น์ทํ์ง๋ง, map๊ณผ reduce๋ฅผ ์ฌ์ฉํด์ ๊ฐ๊ฒฐํ๊ฒ ํํ ํจ.
photo๊ฐ ์ด์ฐจ์ ๋ฐฐ์ด์ด๋ผ๊ณ ์ค๋ณต for๋ฌธ์ ๋์ง ์๊ณ , map์์์ reduce๋ฅผ ๋๋ ธ๋ค. (๊ทผ๋ฐ ๊ฒฐ๊ตญ ์ด ๋ ๋ฉ์๋๋ ๋น์ทํ ์๊ฐ ๋ณต์ก๋ ์ผ ๊ฑฐ ๊ฐ๊ธฐ๋ ํ๊ณ ...)