๐Ÿ“– TIL - ๋ฐฐ์—ด ์ฒญ๋ฌธํšŒ: K๋ฒˆ์งธ ์ˆ˜๊ฐ€ ๋งํ•œ๋‹ค

์Š˜ยท2025๋…„ 1์›” 2์ผ

๐Ÿ“– TIL

๋ชฉ๋ก ๋ณด๊ธฐ
15/90

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช…

๋ฌธ์ œ ์„ค๋ช…

  • ๋ฐฐ์—ด array์—์„œ ์ฃผ์–ด์ง„ ๊ตฌ๊ฐ„์„ ์ž๋ฅด๊ณ , ์ •๋ ฌํ•œ ๋’ค, K๋ฒˆ์งธ ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.

์ž…๋ ฅ

  • array: ์ˆซ์ž ๋ฐฐ์—ด
  • commands: [i, j, k] ํ˜•ํƒœ์˜ 2์ฐจ์› ๋ฐฐ์—ด
    • i: ์‹œ์ž‘ ์ธ๋ฑ์Šค (1-based)
    • j: ๋ ์ธ๋ฑ์Šค (1-based)
    • k: ์ •๋ ฌ ํ›„ K๋ฒˆ์งธ ์ˆซ์ž ์œ„์น˜

์ถœ๋ ฅ

  • ๊ฐ ๋ช…๋ น์— ๋”ฐ๋ผ ๊ตฌํ•œ K๋ฒˆ์งธ ์ˆซ์ž๋“ค์˜ ๋ฐฐ์—ด

์˜ˆ์‹œ

array = [1, 5, 2, 6, 3, 7, 4];
commands = [[2, 5, 3], [4, 4, 1], [1, 7, 3]];

์ถœ๋ ฅ

[5, 6, 3]


๐Ÿค” ๋ฌธ์ œ ์ ‘๊ทผ

  • ๊ตฌ๊ฐ„์„ ์ž๋ฅธ๋‹ค --> slice()
  • ์ •๋ ฌ์„ ํ•ด๋ผ --> sort()
  • ๋ฐฐ์—ด์„ ๋”ํ•ด๋ผ --> reduce()
  • ์‚ฌ์‹ค ์œ„ ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ‘๊ทผ์„ ์ƒ๊ฐํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
function solution(array, commands) {
    var answer = [];
    answer = commands.map((e,i) => {
        let newArr = array.slice(e[0] - 1, e[1]).sort()
        return newArr.length === 1 ? newArr[0] : newArr[e[2] -1]
    })
    return answer;
}

์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๋Œ๋ ค๋ณด๋‹ˆ..

๋‘๋ฒˆ์งธ ์–‘์‹์—์„œ ๊ฑธ๋ฆฌ๊ฒŒ ๋˜์—ˆ๋‹ค..!!
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ AI์ฝ”๋“œ ํ”ผ๋“œ๋ฐฑ์ด ์žˆ๊ธธ๋ž˜..

๋Œ๋ ค๋ณด๋‹ˆ

AI:
์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ์—์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ array.slice(from, to).sort() ๋ถ€๋ถ„์ธ๋ฐ์š”, ์—ฌ๊ธฐ์„œ .sort() ๋ฉ”์†Œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์œ ๋‹ˆ์ฝ”๋“œ ํฌ์ธํŠธ ์ˆœ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ˆซ์ž ๋ฐฐ์—ด์„ ์˜๋„ํ•œ ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” .sort() ๋ฉ”์†Œ๋“œ์— ๋น„๊ต ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆซ์ž๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ ค๋ฉด .sort((a, b) => a - b)์™€ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํžŒํŠธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด๋ณด์„ธ์š”. ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์€ ์ˆซ์ž ์ •๋ ฌ ๋กœ์ง์— ๋น„๊ต ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

function solution(array, commands) {
    var answer = [];
    answer = commands.map((e,i) => {
        let newArr = array.slice(e[0] - 1, e[1]).sort((a,b) => a-b)
        return newArr.length === 1 ? newArr[0] : newArr[e[2] -1]
    })
    return answer;
}

AI์˜ ์กฐ์–ธ์„ ๋ฐ›์•„ sort((a,b) => a-b)๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.
๋‚˜๋Š” ๋ณดํ†ต ์ผ๋ฐ˜์ ์ธ ์ •๋ ฌ์„ ์ง„ํ–‰ํ• ๋•Œ sort()๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉ์„ ํ•˜์˜€๋˜๊ฒƒ ๊ฐ™์€๋ฐ..

๐Ÿ” ์ฝ”๋“œ ์„ค๋ช…

  • slice()๋กœ ํ•ด๋‹น๋˜๋Š” ๋ฒ”์œ„๋ฅผ ์ž๋ฅธ๋’ค, sort()์ •๋ ฌํ•œ๋‹ค
  • ๋งŒ์•ฝ, ๋ฐฐ์—ด๊ฐ’์ด 1์ผ ๊ฒฝ์šฐ์—๋Š” ๋ฐฐ์—ด์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š”๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์—†์„ ํ…Œ๋‹ˆ ์กฐ๊ฑด๋ฌธ์„ ํ•˜๋‚˜ ์ถ”๊ฐ€๋ฅผ ํ•˜์˜€๋‹ค.

    ๊ทธ๋Ÿฐ๋ฐ.. ์กฐ๊ฑด๋ฌธ์ด ๋งŒ์•ฝ 3๋ฒˆ์งธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š”๋ฐ ์‹ค์ œ ๋ฐฐ์—ด์ด ๋งŒ์•ฝ length๊ฐ€ 2๋ผ๋ฉด..์—ฌ๊ธฐ์„œ ์ฒซ๋ฒˆ์งธ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ค๋Š”์ง€, ๊ทธ ์•ž์˜ 2๋ฒˆ์งธ ํ•ญ๋ชฉ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š”์ง€๊ฐ€ ์ข€๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์กฐ๊ฑด๋ฌธ์ด ์žกํ˜”๋”๋ผ๋ฉด ์ข‹์•˜์„๊ฑฐ ๊ฐ™๋‹ค.

โœจ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ์ 

array.sort()๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ž์—ด ๊ธฐ์ค€์˜ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ์š”์†Œ๋“ค์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ฐฉ์‹์€ ์ˆซ์ž ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ๋•Œ ์˜๋„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

[1, 5, 2, 6, 3, 7, 10, 4].sort();
// ["1", "10", "2", "3", "4", "5", "6", "7"] (๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ ํ›„ ์œ ๋‹ˆ์ฝ”๋“œ ์ •๋ ฌ)

๐Ÿš€ ์ด๋Ÿฐ ์ ์ด ํšจ์œจ์ ์ด์—์š”

  • ๊ธฐ๋ณธ sort()๋Š” ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ ํ›„ ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž ๋ฐฐ์—ด์„ ๋‹ค๋ฃฐ ๋•Œ ์˜๋„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋”ฐ๋ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • sort((a, b) => a - b)๋Š” ์ˆซ์ž ๋น„๊ต๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ, ํ•ญ์ƒ ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    โžก๏ธ ์ˆซ์ž ๋ฐฐ์—ด์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
profile
์ฃผ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ์žฅ๊ธฐ ๊ธฐ๋ก๊ธฐ๋ก

0๊ฐœ์˜ ๋Œ“๊ธ€