728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ๋ฌธ์ œ

์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์ด ๋œ ๋‘ ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง€๋ฉด ๋‘ ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ํ•ฉ์ณ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

๐Ÿ“ ํ’€์ด

๐Ÿง‘๐Ÿปโ€๐Ÿ’ป ๋‚˜์˜ ํ’€์ด ๋ฐฉ๋ฒ•(๊ฐ•์‚ฌ๋‹˜ ํ’€์ด ๋ฐฉ๋ฒ•๊ณผ ๋™์ผ๐Ÿ˜)

๋‘ ๋ฐฐ์—ด์„ ํ•˜๋‚˜๋กœ([...arr1, ...arr2]) ํ•ฉ์น˜๊ณ  sort() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, sort() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ € ์—”์ง„๋งˆ๋‹ค ๋‹ค๋ฅด์ง€๋งŒ ํ‰๊ท ์ ์œผ๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(nlogn)์— ํ•ด๋‹นํ•œ๋‹ค. ์ด์— ๋น„ํ•ด ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n + m)์ด๋ฏ€๋กœ ๋งค์šฐ ํšจ์œจ์ ์ด๋‹ค.

 

  • ํฌ์ธํ„ฐ p1, p2๊ฐ€ ๊ฐ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ while๋ฌธ์„ ๋Œ๋ฉฐ arr1[p1]๊ณผ arr2[p2]๋ฅผ ๋น„๊ตํ•œ๋‹ค.
  • ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ํ•ฉ์ณ์•ผ ํ•˜๋ฏ€๋กœ ๋” ์ž‘์€ ๊ฐ’์„ answer์— push() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฝ์ž…ํ•˜๊ณ  ํ•ด๋‹น ํฌ์ธํ„ฐ๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  • ํฌ์ธํ„ฐ ํ•˜๋‚˜๊ฐ€ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ์ด๋™ํ–ˆ์„ ๊ฒฝ์šฐ while๋ฌธ์„ ๋น ์ ธ ๋‚˜์˜ค๊ณ  ๋‚˜๋จธ์ง€ ๋ฐฐ์—ด์˜ ํฌ์ธํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์ด๋™ํ•˜๋ฉฐ ์ฐจ๋ก€๋Œ€๋กœ answer์— ์‚ฝ์ž…ํ•œ๋‹ค.
function solution(arr1, arr2) {
  let answer = [];
  let N = arr1.length;
  let M = arr2.length;
  let p1 = 0, p2 = 0;

  while (p1 < N && p2 < M) {
    if (arr1[p1] <= arr2[p2]) answer.push(arr1[p1++]);
    else answer.push(arr2[p2++]);
  }

  while (p1 < N) answer.push(arr1[p1++]);
  while (p2 < M) answer.push(arr2[p2++]);

  return answer;
}

let a = [1, 3, 5];
let b = [2, 3, 6, 7, 9];
console.log(solution(a, b));
_์„ฑํ˜ธ_