๐Ÿ“• Algorithm/Solved

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] K๋ฒˆ์งธ ์ˆ˜ (Javascript)

ํ•œ์ฝ”๋”ฉ 2021. 1. 7. 10:12
728x90
728x90

๋ฌธ์ œ ์„ค๋ช…

๋ฐฐ์—ด array์˜ i๋ฒˆ์งธ ์ˆซ์ž๋ถ€ํ„ฐ j๋ฒˆ์งธ ์ˆซ์ž๊นŒ์ง€ ์ž๋ฅด๊ณ  ์ •๋ ฌํ–ˆ์„ ๋•Œ, k๋ฒˆ์งธ์— ์žˆ๋Š” ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด array๊ฐ€ [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3์ด๋ผ๋ฉด

  1. array์˜ 2๋ฒˆ์งธ๋ถ€ํ„ฐ 5๋ฒˆ์งธ๊นŒ์ง€ ์ž๋ฅด๋ฉด [5, 2, 6, 3]์ž…๋‹ˆ๋‹ค.
  2. 1์—์„œ ๋‚˜์˜จ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋ฉด [2, 3, 5, 6]์ž…๋‹ˆ๋‹ค.
  3. 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; }
728x90
๋ฐ˜์‘ํ˜•