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๋ฐฐ์ด์ ๋๊ฒจ์ค๋ค. ์ด ๋ฐฐ์ด์ ์ด๊ธฐ ๋์ ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ค.
'Study_Develop > ์๊ณ ๋ฆฌ์ฆ | ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ์์ด๊ณผ ๊ตฌ๊ฐ ์ฟผ๋ฆฌ 4 - js (0) | 2023.08.04 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ์์ด๊ณผ ๊ตฌ๊ฐ ์ฟผ๋ฆฌ 2 - js (0) | 2023.07.29 |
ํ๋ก๊ทธ๋๋จธ์ค - ์ ์กฐ์ํ๊ธฐ 2 - js (reduce ๋ฉ์๋, switch - case๋ฌธ) (0) | 2023.07.27 |
ํ๋ก๊ทธ๋๋จธ์ค - ์ ์กฐ์ํ๊ธฐ 1 - js (0) | 2023.07.27 |
ํ๋ก๊ทธ๋๋จธ์ค - ๋ง์ง๋ง ๋ ์์ - js (at ๋ฉ์๋) (0) | 2023.07.27 |