๋ฌธ์ ์ค๋ช
๋ฐฐ์ด array์ i๋ฒ์งธ ์ซ์๋ถํฐ j๋ฒ์งธ ์ซ์๊น์ง ์๋ฅด๊ณ ์ ๋ ฌํ์ ๋, k๋ฒ์งธ์ ์๋ ์๋ฅผ ๊ตฌํ๋ ค ํฉ๋๋ค.
์๋ฅผ ๋ค์ด array๊ฐ [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3์ด๋ผ๋ฉด
- array์ 2๋ฒ์งธ๋ถํฐ 5๋ฒ์งธ๊น์ง ์๋ฅด๋ฉด [5, 2, 6, 3]์ ๋๋ค.
- 1์์ ๋์จ ๋ฐฐ์ด์ ์ ๋ ฌํ๋ฉด [2, 3, 5, 6]์ ๋๋ค.
- 2์์ ๋์จ ๋ฐฐ์ด์ 3๋ฒ์งธ ์ซ์๋ 5์ ๋๋ค.
๋ฐฐ์ด array, [i, j, k]๋ฅผ ์์๋ก ๊ฐ์ง 2์ฐจ์ ๋ฐฐ์ด commands๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, commands์ ๋ชจ๋ ์์์ ๋ํด ์์ ์ค๋ช ํ ์ฐ์ฐ์ ์ ์ฉํ์ ๋ ๋์จ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- array์ ๊ธธ์ด๋ 1 ์ด์ 100 ์ดํ์ ๋๋ค.
- array์ ๊ฐ ์์๋ 1 ์ด์ 100 ์ดํ์ ๋๋ค.
- commands์ ๊ธธ์ด๋ 1 ์ด์ 50 ์ดํ์ ๋๋ค.
- commands์ ๊ฐ ์์๋ ๊ธธ์ด๊ฐ 3์ ๋๋ค.
์ ์ถ๋ ฅ ์
[1, 5, 2, 6, 3, 7, 4] | [[2, 5, 3], [4, 4, 1], [1, 7, 3]] | [5, 6, 3] |
์ ์ถ๋ ฅ ์ ์ค๋ช
[1, 5, 2, 6, 3, 7, 4]๋ฅผ 2๋ฒ์งธ๋ถํฐ 5๋ฒ์งธ๊น์ง ์๋ฅธ ํ ์ ๋ ฌํฉ๋๋ค. [2, 3, 5, 6]์ ์ธ ๋ฒ์งธ ์ซ์๋ 5์
๋๋ค.
[1, 5, 2, 6, 3, 7, 4]๋ฅผ 4๋ฒ์งธ๋ถํฐ 4๋ฒ์งธ๊น์ง ์๋ฅธ ํ ์ ๋ ฌํฉ๋๋ค. [6]์ ์ฒซ ๋ฒ์งธ ์ซ์๋ 6์
๋๋ค.
[1, 5, 2, 6, 3, 7, 4]๋ฅผ 1๋ฒ์งธ๋ถํฐ 7๋ฒ์งธ๊น์ง ์๋ฆ
๋๋ค. [1, 2, 3, 4, 5, 6, 7]์ ์ธ ๋ฒ์งธ ์ซ์๋ 3์
๋๋ค
function solution(array, commands) {
var answer = [];
for(let i in commands)
answer.push(array.slice(commands[i][0] - 1, commands[i][1]).sort((a, b) => a - b)[commands[i][2] - 1]);
return answer;
}
sortํจ์๋ฅผ ์ฌ์ฉํ ๋, sort()๋ก๋ง ์์ฑํ๋ ํ ์คํธ์ผ์ด์ค 2๋ฒ์ด ์คํจ๊ฐ ๋ด๋ค.
์ฐพ์๋ณด๋, sort( (a,b) => a - b)ํํ๋ก sortํจ์๋ฅผ ์ฌ์ฉํด์ผ ํต๊ณผ์๋ค.
์์ธ์ sort()๋ ๋ฌธ์์ด์ ์ ๋ ฌํ๋ค๊ณ ๊ฐ์ ํ๋ค. ์ซ์๋ฅผ ์ ๋ ฌ ํ ๋ ๊ธฐ๋ณธ ๋์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฌ๋์ง ์๋๋ค.
๋ฐ๋ผ์ ์ ์๋ฅผ ์ ๋ ฌํ ๋์๋ ์์๊ฐ์ด ์์ฑํด์ค์ผ ํ๋ค.
์๋๋ MDN ์ค๋ช ์ด๋ค.
compareFunction์ด ์ ๊ณต๋์ง ์์ผ๋ฉด ์์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๊ณ ์ ๋ ์ฝ๋ ์ฝ๋ ํฌ์ธํธ ์์๋ก ๋ฌธ์์ด์ ๋น๊ตํ์ฌ ์ ๋ ฌ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด "๋ฐ๋๋"๋ "์ฒด๋ฆฌ"์์์ต๋๋ค. ์ซ์ ์ ๋ ฌ์์๋ 9๊ฐ 80๋ณด๋ค ์์ ์ค์ง๋ง ์ซ์๋ ๋ฌธ์์ด๋ก ๋ณํ๋๊ธฐ ๋๋ฌธ์ "80"์ ์ ๋ ์ฝ๋ ์์์์ "9"์์์ต๋๋ค.
compareFunction์ด ์ ๊ณต๋๋ฉด ๋ฐฐ์ด ์์๋ compare ํจ์์ ๋ฐํ ๊ฐ์ ๋ฐ๋ผ ์ ๋ ฌ๋ฉ๋๋ค. a์ b๊ฐ ๋น๊ต๋๋ ๋ ์์๋ผ๋ฉด,
- compareFunction(a, b)์ด 0๋ณด๋ค ์์ ๊ฒฝ์ฐ a๋ฅผ b๋ณด๋ค ๋ฎ์ ์์ธ์ผ๋ก ์ ๋ ฌํฉ๋๋ค. ์ฆ, a๊ฐ ๋จผ์ ์ต๋๋ค.
- compareFunction(a, b)์ด 0์ ๋ฐํํ๋ฉด a์ b๋ฅผ ์๋ก์ ๋ํด ๋ณ๊ฒฝํ์ง ์๊ณ ๋ชจ๋ ๋ค๋ฅธ ์์์ ๋ํด ์ ๋ ฌํฉ๋๋ค. ์ฐธ๊ณ : ECMAscript ํ์ค์ ์ด๋ฌํ ๋์์ ๋ณด์ฅํ์ง ์์ผ๋ฏ๋ก ๋ชจ๋ ๋ธ๋ผ์ฐ์ (์ : Mozilla ๋ฒ์ ์ ์ ์ด๋ 2003 ๋ ์ดํ ๋ฒ์ ์)๊ฐ ์ด๋ฅผ ์กด์คํ์ง๋ ์์ต๋๋ค.
- compareFunction(a, b)์ด 0๋ณด๋ค ํฐ ๊ฒฝ์ฐ, b๋ฅผ a๋ณด๋ค ๋ฎ์ ์ธ๋ฑ์ค๋ก ์ํธํฉ๋๋ค.
- compareFunction(a, b)์ ์์ a์ b์ ํน์ ์์ด ๋ ๊ฐ์ ์ธ์๋ก ์ฃผ์ด์ง ๋ ํญ์ ๋์ผํ ๊ฐ์ ๋ฐํํด์ผํฉ๋๋ค. ์ผ์นํ์ง ์๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋๋ฉด ์ ๋ ฌ ์์๋ ์ ์๋์ง ์์ต๋๋ค.
๋ฐ๋ผ์ compare ํจ์์ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
function compareNumbers(a, b) { return a - b; }
'๐ Algorithm > Solved' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฒด์ก๋ณต (Javascript) (0) | 2021.01.10 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ชจ์๊ณ ์ฌ (Javascript) (0) | 2021.01.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ฃผํ์ง ๋ชปํ ์ ์ (Javascript) (0) | 2021.01.07 |
[๋ฐฑ์ค] 2789 ๋ธ๋์ญ (ํ์ด์ฌ3 Python3) (0) | 2020.10.03 |
[๋ฐฑ์ค] 2941 ํฌ๋ก์ํฐ์ ์ํ๋ฒณ (ํ์ด์ฌ3 Python3) (0) | 2020.10.02 |