Jieunny์˜ ๋ธ”๋กœ๊ทธ

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - n^2 ๋ฐฐ์—ด ์ž๋ฅด๊ธฐ ๋ณธ๋ฌธ

Study/Coding Test

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - n^2 ๋ฐฐ์—ด ์ž๋ฅด๊ธฐ

Jieunny 2023. 2. 28. 10:33

๐Ÿ“Œ  ๋ฌธ์ œ

์ •์ˆ˜ n, left, right๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ 1์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

  1. nํ–‰ n์—ด ํฌ๊ธฐ์˜ ๋น„์–ด์žˆ๋Š” 2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. i = 1, 2, 3, ..., n์— ๋Œ€ํ•ด์„œ, ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
    • 1ํ–‰ 1์—ด๋ถ€ํ„ฐ iํ–‰ i์—ด๊นŒ์ง€์˜ ์˜์—ญ ๋‚ด์˜ ๋ชจ๋“  ๋นˆ ์นธ์„ ์ˆซ์ž i๋กœ ์ฑ„์›๋‹ˆ๋‹ค.
  3. 1ํ–‰, 2ํ–‰, ..., nํ–‰์„ ์ž˜๋ผ๋‚ด์–ด ๋ชจ๋‘ ์ด์–ด๋ถ™์ธ ์ƒˆ๋กœ์šด 1์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  4. ์ƒˆ๋กœ์šด 1์ฐจ์› ๋ฐฐ์—ด์„ arr์ด๋ผ ํ•  ๋•Œ, arr[left], arr[left+1], ..., arr[right]๋งŒ ๋‚จ๊ธฐ๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ง€์›๋‹ˆ๋‹ค.

์ •์ˆ˜ n, left, right๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ ๊ณผ์ •๋Œ€๋กœ ๋งŒ๋“ค์–ด์ง„ 1์ฐจ์› ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ n ≤ 107
  • 0 ≤ left  right < n2
  • right - left < 105

 

๐Ÿ’ก  ์•„์ด๋””์–ด

ํ•˜๋ž€๋Œ€๋กœ ํ•˜๋ฉด ์ฝ”์–ด๋คํ”„ + ์‹œ๊ฐ„์ดˆ๊ณผ...

์ฒ˜์Œ์—” 1์ฐจ์› ๋ฐฐ์—ด์„ ๊ตฌํ•ด์„œ sliceํ–ˆ๋Š”๋ฐ ์ง€๊ธˆ ์ƒ๊ฐํ•˜๋‹ˆ๊นŒ ๋‹น์—ฐํžˆ ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚˜๊ฒ ๋„ค๐Ÿฅน

์งˆ๋ฌธํƒญ ๋ณด๋‹ˆ๊นŒ left ๊ฐ’์— /n, %n ์„ ์ž˜ ํ•˜๋ฉด ์ „์ฒด ๋ฐฐ์—ด์„ ์•ˆ ๊ตฌํ•˜๊ณ  ๊ตฌํ• ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ์ƒ๊ฐํ•ด๋ดค๋‹ค..

์ผ๋‹จ left๋ถ€ํ„ฐ right ๊ฐœ์ˆ˜๋งŒํผ ์š”์†Œ๊ฐ€ ์žˆ์–ด์•ผํ•˜๋‹ˆ๊นŒ ๊ทธ๋งŒํผ for๋ฌธ ๋Œ๋ฆฌ๊ณ ,

left ๊ฐ’์€ 1์ฐจ์› ๋ฐฐ์—ด์˜ ์–ด๋”˜๊ฐ€๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š”๋ฐ, ์ผ์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•œ๊ฒƒ์ด๋ฏ€๋กœ ๊ทธ ๊ฐ’์ด n ๋ณด๋‹ค ํด ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ทธ ๊ฐ’์„ n์œผ๋กœ ๋‚˜๋ˆ ์ฃผ๋ฉด ๋ชซ์ด ๊ทธ ๊ฐ’์˜ ํ–‰, ์ฆ‰ ๋ช‡๋ฒˆ์งธ ์›์†Œ์— ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฐ’์„ n์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋Š” ๊ทธ ๊ฐ’์˜ ์—ด, ์ฆ‰ ๊ทธ ์›์†Œ๊ฐ€ ํ•œ ์›์†Œ์•ˆ์˜ ๋ช‡๋ฒˆ์งธ์— ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

i๋กœ ๊ฐ’์„๋“ค ์ฑ„์šธ ๋•Œ ๊ทœ์น™์„ ๋ณด๋ฉด x,y ๊ฐ’ ์ค‘ ํฐ ๊ฐ’์— +1์„ ๋”ํ•œ ๊ฐ’์ด ๊ทธ ์ธ๋ฑ์Šค์˜ ์›์†Œ๊ฐ€ ๋œ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ๊ตฌํ•œ x, y์—์„œ max๋ฅผ ๊ตฌํ•ด์„œ 1๋”ํ•œ ๊ฐ’์„ answer์— pushํ•ด์ค€๋‹ค..

์•„ ์–ด๋ ต๋‹ค...

 

โœ๏ธ  ํ’€์ด

function solution(n, left, right) {
  var answer = [];
  
  for(let i=left; i<=right; i++){
    let yIdx = Math.floor(i/n);
    let xIdx = i%n;
    answer.push(Math.max(yIdx, xIdx) + 1);
  }
  return answer;
}