ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ˆ˜์—ด๊ณผ ๊ตฌ๊ฐ„ ์ฟผ๋ฆฌ 4 - js

2023. 8. 4. 15:54ใ†Study_Develop/์•Œ๊ณ ๋ฆฌ์ฆ˜ | ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

๋ฐ˜์‘ํ˜•

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ˆ˜์—ด๊ณผ ๊ตฌ๊ฐ„ ์ฟผ๋ฆฌ 4 - js

 

๋ฌธ์ œ

 

์ •์ˆ˜ ๋ฐฐ์—ด arr์™€ 2์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด queries์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. queries์˜ ์›์†Œ๋Š” ๊ฐ๊ฐ ํ•˜๋‚˜์˜ query๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, [s, e, k] ๊ผด์ž…๋‹ˆ๋‹ค.

๊ฐ query๋งˆ๋‹ค ์ˆœ์„œ๋Œ€๋กœ s ≤ i ≤ e์ธ ๋ชจ๋“  i์— ๋Œ€ํ•ด i๊ฐ€ k์˜ ๋ฐฐ์ˆ˜์ด๋ฉด arr[i]์— 1์„ ๋”ํ•ฉ๋‹ˆ๋‹ค.

์œ„ ๊ทœ์น™์— ๋”ฐ๋ผ queries๋ฅผ ์ฒ˜๋ฆฌํ•œ ์ดํ›„์˜ arr๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

 

 

์ œํ•œ์‚ฌํ•ญ

 

1 ≤ arr์˜ ๊ธธ์ด ≤ 1,000
0 ≤ arr์˜ ์›์†Œ ≤ 1,000,000
1 ≤ queries์˜ ๊ธธ์ด ≤ 1,000
0 ≤ s ≤ e < arr์˜ ๊ธธ์ด
0 ≤ k ≤ 5

 

์ž…์ถœ๋ ฅ ์˜ˆ

 

arr queries result
[0, 1, 2, 4, 3] [[0, 4, 1],[0, 3, 2],[0, 3, 3]] [3, 2, 4, 6, 4]

 

์ž…์ถœ๋ ฅ ์˜ˆ

 

๊ฐ ์ฟผ๋ฆฌ์— ๋”ฐ๋ผ arr๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€ํ•ฉ๋‹ˆ๋‹ค.

 

arr
[0, 1, 2, 4, 3]
[1, 2, 3, 5, 4]
[2, 2, 4, 5, 4]
[3, 2, 4, 6, 4]

 

๋”ฐ๋ผ์„œ [3, 2, 4, 6, 4]๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

 

 

solution.js

 

function solution(arr, queries) {
    return queries.reduce((acc, cur) => {
        const copyArr = [...acc]
        const [to, from, val] = cur
        return copyArr.map((el, elIdx) => {
            if(elIdx >= to && elIdx <= from) {
                if(elIdx%val === 0) return el+1
            }
            return el
        })
    }, arr)
}

 

- reduce ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ queries๋ฐฐ์—ด์„ ์ˆœํšŒ ์‹œํ‚จ๋‹ค.

 

- acc์˜ ์‚ฌ๋ณธ์„ ๋งŒ๋“ค์–ด copyArr์— ํ• ๋‹นํ•œ๋‹ค.

 

- copyArr๋ฐฐ์—ด์„ map๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•œ๋‹ค.

 

- ํ˜„์žฌ ์š”์†Œ์˜ ์ธ๋ฑ์Šค elIdx๊ฐ€ to์™€ from ์‚ฌ์ด์— ์œ„์น˜ํ•˜๋Š”์ง€ ํ™•์ธ

 

- ๋งŒ์•ฝ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ผ๋ฉด, ํ˜„์žฌ ์š”์†Œ 'el'์— 'val'๊ฐ’์„ ๋”ํ•ด์ค€๋‹ค.

 

- map ๋ฉ”์„œ๋“œ์— ์˜ํ•ด ๋ณ€ํ˜•๋œ ์š”์†Œ๋“ค์„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

- ๋ชจ๋“  ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๋ฉด, ์ตœ์ข…์ ์œผ๋กœ ๋ณ€๊ฒฝ๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.