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

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

๋ฐ˜์‘ํ˜•

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

 

๋ฌธ์ œ

 

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

๊ฐ query๋งˆ๋‹ค ์ˆœ์„œ๋Œ€๋กœ arr[i]์˜ ๊ฐ’๊ณผ arr[j]์˜ ๊ฐ’์„ ์„œ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

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

 

 

์ œํ•œ ์‚ฌํ•ญ

 

1 ≤ arr์˜ ๊ธธ์ด ≤ 1,000
0 ≤ arr์˜ ์›์†Œ ≤ 1,000,000
1 ≤ queries์˜ ๊ธธ์ด ≤ 1,000
0 ≤ i < j < arr์˜ ๊ธธ์ด

 

์ž…์ถœ๋ ฅ ์˜ˆ

 

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

 

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

 

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

 

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

 

 

solution.js

 

function solution(arr, queries) {
    return queries.reduce((acc, cur, idx, origin) => {
        const copyAcc = [...acc]
        const [to, from] = cur
        const box = acc[to]
        copyAcc[to] = copyAcc[from]
        copyAcc[from] = box
        return copyAcc
    }, [...arr])
}

 

- ํ•จ์ˆ˜ ์„ ์–ธ๋ถ€๋ถ„์œผ๋กœ, arr๊ณผ queries๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š”๋‹ค.

 

- return queries.reduce((acc, cur, idx, origin)) => : ๋ฐฐ์—ด์„ reduceํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค. reduceํ•จ์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ์ฝœ๋ฐฑํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์œผ ใ„น๋ˆ„์ ํ•˜์—ฌ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. acc๋Š” ๋ˆ„์ ๊ฐ’์œผ๋กœ ํ˜„์žฌ๊นŒ์ง€์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด๊ณ ์žˆ๊ณ , cur์€ ํ˜„์žฌ ์ฟผ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. idx๋Š” ํ˜„์žฌ ์ฟผ๋ฆฌ์˜ ์ธ๋ฑ์Šค๋ฅผ, origin์€ ์›๋ž˜ queries๋ฐฐ์—ด ์ž์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

- const copyAcc = [...acc] : acc๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•˜์—ฌ copyAcc์— ์ €์žฅ

 

- const [to, from]= cur : ํ˜„์žฌ ์ฟผ๋ฆฌ cur์—์„œ ๋ชฉ์ ์ง€ ์ธ๋ฑ์Šค to์™€ ๊ตํ™˜ํ•  ์ธ๋ฑ์Šค from ์„ ์ถ”์ถœํ•œ๋‹ค. cur์€ [to, from ] ํ˜•ํƒœ์˜ ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง„๋‹ค.

 

- const box= acc[to] : to์ธ๋ฑ์Šค์˜ ๊ฐ’์„ box์— ์ €์žฅํ•œ๋‹ค. ๋‚˜์ค‘์— from ์ธ๋ฑ์Šค์™€ ๊ตํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ

 

- copyAcc[to] = copyAcc[from]: from ์ธ๋ฑ์Šค ๊ฐ’์„ copyAcc์˜ to์ธ๋ฑ์Šค๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

 

- copyAcc[from] = box : ์ด์ „์— ์ €์žฅํ•œ box๊ฐ’์„ copyAcc์˜ from ์ธ๋ฑ์Šค๋กœ ์ด๋™์‹œ์นธ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด to์™€ from ์ธ๋ฑ์Šค ๊ฐ’์ด ๊ตํ™˜๋œ๋‹ค.

 

- return copyAcc : ์ด๋ฒˆ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„์˜ copyAcc๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

- }, [...acc]) : reduceํ•จ์ˆ˜์˜ ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ arr๋ฐฐ์—ด์„ ๋„˜๊ฒจ์ค€๋‹ค. ์ด ๋ฐฐ์—ด์„ ์ดˆ๊ธฐ ๋ˆ„์ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.