๐ฉ๐ป๐ป๋ฌธ์ ๋งํฌ
[ํ๋ก๊ทธ๋๋จธ์ค 42748] K๋ฒ์งธ์ (Javascript)
๋ฌธ์ ์ค๋ช
๋ฐฐ์ด 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์
๋๋ค.
์
์ถ๋ ฅ ์
array commands return
[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์
๋๋ค.
โ๏ธIdea Sketch
2021-06-18
1. i~j๊น์ง ๋ฐฐ์ด ์๋ฅด๊ธฐ --> ์ ๋ ฌ --> K๋ฒ์งธ์
2. commands.length๋งํผ ๋ฐ๋ณต
commands.forEach(command => {
let arr = array.splice().sort();
result.push();
})
3. array.splice(index, ์ ๊ฑฐํ ์์์ ๊ฐ์, ์ถ๊ฐํ ์์)
- ๋ฐฐ์ด ์์๋ฅผ ์ญ์ /๊ต์ฒด/์ถ๊ฐ
- ์๋ณธ์ด ๋ฐ๋
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb'); // index 1์ 'Feb' ์ถ๊ฐ (0๊ฐ ์ ๊ฑฐ)
console.log(months); // output: ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May'); // index 4๋ฅผ 'May'๋ก ๋์ฒด (1๊ฐ "June" ์ ๊ฑฐ)
console.log(months); // output: ["Jan", "Feb", "March", "April", "May"]
4. array.slice(begin, end)
- ๋ฐฐ์ด ์ธ๋ฑ์ค begin๋ถํฐ end๊น์ง ์์ ๋ณต์ฌ๋ณธ์ ๋ฐํ
- ๋ณต์ฌ๋๊น ์๋ณธ์ ๋ฐ๋์ง ์์
- end ๋ฐ๋ก ์ ๊น์ง ๋ณต์ฌํ๋ฉฐ, end๊ฐ ์์ผ๋ฉด ๋๊น์ง ๋ณต์ฌ
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
console.log(animals.slice(2)); // output: ["camel", "duck", "elephant"]
console.log(animals.slice(2, 4)); // output: ["camel", "duck"] --> index 4์ธ 'elephant' ๋ฏธํฌํจ
console.log(animals.slice(1, 5)); // output: ["bison", "camel", "duck", "elephant"]
console.log(animals.slice(-2)); // output: ["duck", "elephant"]
console.log(animals.slice(2, -1)); // output: ["camel", "duck"] --> index -1์ธ 'elephant' ๋ฏธํฌํจ
5. ์๋ณธ์ด ๋ฐ๋๋ฉด ์๋๋ฏ๋ก, array.slice() ์ฌ์ฉ
โ๏ธ์์ค์ฝ๋
2021-06-18 ์ ํ์ฑ ํต๊ณผ
function solution(array, commands) {
let res = [];
commands.forEach(command => {
let arr = array.slice(command[0] - 1, command[1]).sort((a, b) => a-b); // i๋ฒ์งธ ์ซ์๋ถํฐ j๋ฒ์งธ ์ซ์๊น์ง ์๋ฅด๊ณ ์ ๋ ฌ
res.push(arr[command[2] - 1]) // k๋ฒ์งธ์ ์๋ ์๋ฅผ ๊ตฌํ๊ธฐ
})
return res;
}
โ๏ธ๋ช ๋ต
command[0], command[1], command[2] ๋ช ์์ ์ผ๋ก ๋ง๋ค๊ธฐ
const [sPosition, ePosition, position] = command
- arr.map()์ ์ฌ์ฉํ์ฌ ๋ฐ๋ก return
- ๋ด ์์ค์ฝ๋์ res.push() ํ์x
function solution(array, commands) {
return commands.map(command => {
const [sPosition, ePosition, position] = command
const newArray = array
.filter((value, fIndex) => fIndex >= sPosition - 1 && fIndex <= ePosition - 1) // i๋ฒ์งธ ์ซ์๋ถํฐ j๋ฒ์งธ ์ซ์๊น์ง ์๋ฅด๊ธฐ
.sort((a,b) => a - b) // ์ ๋ ฌ
return newArray[position - 1] // k๋ฒ์งธ์ ์๋ ์๋ฅผ ๊ตฌํ๊ธฐ
})
}