๐Ÿ”’Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ’€์ด(js) > ์ตœ์†Ÿ๊ฐ’ ๋งŒ๋“ค๊ธฐ (lv2)

devWarrior 2023. 6. 13. 21:18

๋ฌธ์ œ๐Ÿ”ฝ

https://school.programmers.co.kr/learn/courses/30/lessons/12941

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๋‹ค๋ฅธ์‚ฌ๋žŒ ํ’€์ด ๐Ÿ”ฝ


function solution(A,B){
    A.sort((a, b) => a - b)
    B.sort((a, b) => b - a)
    return A.reduce((total, val, idx) => total + val * B[idx], 0)
}

๋‚ดํ’€์ด๐Ÿ”ฝ

function solution(A,B){
    var answer = 0;

    let array1 = A.sort((a,b)=>{
        return a-b;
    })    
    let array2 = B.sort((a,b)=>{
        return b-a;
    })

    A.forEach((value,index)=>{
        answer += value*array2[index]
    })

    return answer;
}

๋А๋‚€์ ๐Ÿ˜ฎ 

sort ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•ด ๋‹ค์‹œ๊ธˆ ์ƒ๊ธฐํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค. sort() ๋ฉ”์„œ๋“œ์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ, ์˜ค๋ฆ„์ฐจ์ˆœ์€ ๋ณผ๋•Œ๋งˆ๋‹ค ํ–‡๊ฐˆ๋ฆฐ๋‹ค... ๊ทธ๋‚˜๋งˆ ์‰ฝ๊ฒŒ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ƒˆ๋‹ค. sort( (a, b) => {return a-b } )  => ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ์‹์ธ๋ฐ => a๊ฐ€ ๋” ์ž‘์€์ˆ˜ b๊ฐ€ ํฐ ์ˆ˜๋ผ ์ƒ๊ฐํ•˜๋ฉด a๊ฐ€ ๋จผ์ €์˜ค๊ณ  ๊ทธ ๋’ค์— b๊ฐ€ ์˜จ๋‹ค, ์ฆ‰ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋‹ค ์ด๋Ÿฐ์‹์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด sort์˜ ์˜ค๋ฆ„์ฐจ์ˆœ ๋ฐฉ๋ฒ•์„ ๋” ์ž˜ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค. 
 
ํ•œํŽธ, ํ’€์ด์—์„œ reduce๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ๊ฒŒ ์กฐ๊ธˆ์€ ์•„์‰ฝ๋‹ค. ๊ธฐ์™• ์ด๋ ‡๊ฒŒ ๋œ ๊น€์— reduce ๋ฉ”์„œ๋“œ ํ•œ๋ฒˆ ๋” ๋ณด์ž
 

Array.prototype.reduce() - JavaScript | MDN

reduce() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ ๋ฆฌ๋“€์„œ (reducer) ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

developer.mozilla.org