๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[Algorithm] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv.1 : ์Œ์–‘ ๋”ํ•˜๊ธฐ

by ์ฝ”๋”ฉ๊ณต์ฑ… 2022. 11. 22.
๋ฐ˜์‘ํ˜•

์Œ์–‘ ๋”ํ•˜๊ธฐ

์–ด๋–ค ์ •์ˆ˜๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •์ˆ˜๋“ค์˜ ์ ˆ๋Œ“๊ฐ’์„ ์ฐจ๋ก€๋Œ€๋กœ ๋‹ด์€ ์ •์ˆ˜ ๋ฐฐ์—ด absolutes์™€ ์ด ์ •์ˆ˜๋“ค์˜ ๋ถ€ํ˜ธ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๋‹ด์€ ๋ถˆ๋ฆฌ์–ธ ๋ฐฐ์—ด signs๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์‹ค์ œ ์ •์ˆ˜๋“ค์˜ ํ•ฉ์„ ๊ตฌํ•˜์—ฌ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ ์กฐ๊ฑด

* absolutes์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
* absolutes์˜ ๋ชจ๋“  ์ˆ˜๋Š” ๊ฐ๊ฐ 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
* signs์˜ ๊ธธ์ด๋Š” absolutes์˜ ๊ธธ์ด์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
* signs[i] ๊ฐ€ ์ฐธ์ด๋ฉด absolutes[i] ์˜ ์‹ค์ œ ์ •์ˆ˜๊ฐ€ ์–‘์ˆ˜์ž„์„, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์Œ์ˆ˜์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.


์ž…์ถœ๋ ฅ ์˜ˆ

absolutes signs result
[4,7,12] [true,false,true] 9
[1,2,3] [false,false,true] 0

์ž…์ถœ๋ ฅ ์˜ˆ #1
* signs๊ฐ€ [true,false,true] ์ด๋ฏ€๋กœ, ์‹ค์ œ ์ˆ˜๋“ค์˜ ๊ฐ’์€ ๊ฐ๊ฐ 4, -7, 12์ž…๋‹ˆ๋‹ค.
* ๋”ฐ๋ผ์„œ ์„ธ ์ˆ˜์˜ ํ•ฉ์ธ 9๋ฅผ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2
* signs๊ฐ€ [false,false,true] ์ด๋ฏ€๋กœ, ์‹ค์ œ ์ˆ˜๋“ค์˜ ๊ฐ’์€ ๊ฐ๊ฐ -1, -2, 3์ž…๋‹ˆ๋‹ค.
* ๋”ฐ๋ผ์„œ ์„ธ ์ˆ˜์˜ ํ•ฉ์ธ 0์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๋ฌธ์ œ ํ’€์ด

forEach๋ฌธ์œผ๋กœ true์ผ ๊ฒฝ์šฐ answer์— +=, ์•„๋‹ ๊ฒฝ์šฐ -=๋กœ ํ”Œ๋Ÿฌ์Šค/๋งˆ์ด๋„ˆ์Šค๋ฅผ ๋ถ™์—ฌ ์Œ์–‘์„ ๋”ํ•ด์ค๋‹ˆ๋‹ค. signs์—์„œ true์ธ 4,12๋Š” ๊ทธ๋Œ€๋กœ ๋”ํ•˜๊ณ  false์ธ 7์€ -7๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ต์€ 9๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. [1,2,3]์˜ ๊ฒฝ์šฐ [-1,-2,3]์œผ๋กœ ๋”ํ•˜๋ฉด 0์ž…๋‹ˆ๋‹ค.

function solution(absolutes, signs) {
    let answer = 0;
    absolutes.forEach((v, i) => {
        if (signs[i]) {
            answer += v;
        } else {
            answer -= v;
        }
    })
    return answer;
}

๋‹ค๋ฅธ ํ’€์ด ๋ฐฉ์‹

reduce๋กœ ํ•œ ์ค„๋กœ ๊ฐ„๋‹จํžˆ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

function solution(absolutes, signs) {

    return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€


Reference Book

JavaScript
HTML
CSS
๊ด‘๊ณ  ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.