๐Ÿฆ_21.12.15 TIL

Boriยท2021๋…„ 12์›” 15์ผ
2
post-thumbnail

21๋…„ 12์›” 15์ผ

* { box-sizing : border-box};

*์„ ํƒ์ž ์‚ฌ์šฉ์„ ์ค„์—ฌ์•ผํ•œ๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ๋Š”๋ฐ, ์ˆ˜๊ฐ• ์ค‘์ธ ์œ ๋ฐ๋ฏธ ๊ฐ•์˜์—์„œ ํ•ญ์ƒ * { box-sizing : border-box};ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ถ๊ธˆํ–ˆ์—ˆ๋‹ค.

  • ์กด๋‹˜์—๊ฒŒ ์งˆ๋ฌธํ•œ ๊ฒฐ๊ณผ
    • next app ์…‹ํŒ…ํ•˜๋ฉด ๊ธฐ๋ณธ CSS์ด๋‹ค.
    • vw, vh๋ฅผ ๋งŽ์ด ์“ฐ๋‹ค๋ณด๋‹ˆ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
    • *๋Š” ํ•œ ๋ฒˆ ์ผ์œผ๋‹ˆ ์ž์ œํ•œ๊ฑฐ๋‹ค^^
      => ์ €๋Š” ์‚ฌ์šฉ ์ž์ฒด๋ฅผ ํ•˜๋ฉด ์•ˆ๋œ๋‹ค๊ณ  ์ดํ•ดํ•ด๋ฒ„๋ ธ๋„ค์š”.
    • box-sizing์˜ ๊ฒฝ์šฐ ์˜คํžˆ๋ ค ์ผ๋ถ€ ์š”์†Œ์—๋งŒ ์“ฐ์ด๋ฉด ๋” ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์–ด์„œ ์ „์ฒด๋กœ ๋„ฃ๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๋Š” ํ‰์ด ๋งŽ๋‹ค.
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด MFA (Micro Frontend Architecture)์ด๋ผ๋ฉด ์ €๋ ‡๊ฒŒ ํ•˜๋ฉด ์•ˆ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

=> ์‹ค์€ ์ œ๊ฐ€ * { box-sizing : border-box};์„ ์ข‹์•„ํ•˜๋Š”๋ฐ์š”. ๋งˆ์นจ ์กด๋‹˜ ์ฝ”๋“œ์— ๋ณด์—ฌ์„œ ์งˆ๋ฌธ์„ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ฐœ์šด-
* MFA (Micro Frontend Architecture) ๋‚ด์šฉ ์ฐพ์•„๋ณด๊ธฐ

๐Ÿ“ ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿ“Ž ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Linked list)_2

class Node {
  constructor(data) {
    this.data = data;
    this.next = null;
  }
}

class LinkedList {
  constructor() {
    let init = new Node("init");
    this.head = init;
    this.tail = init;

    this.ํ˜„์žฌ๋…ธ๋“œ = undefined;
    this.๋ฐ์ดํ„ฐ์ˆ˜ = 0;
  }
  // ํ•˜๋‹จ์— ์ž‘์„ฑํ–ˆ๋˜ ๋‚ด์šฉ 
  // constructor ์•„๋ž˜๋กœ ์ด๋™
  get fullData() {
    let ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ = this.head;
    ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ = ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ.next;

    let s = "";
    for (let i = 0; i < this.๋ฐ์ดํ„ฐ์ˆ˜; i++) {
      s += `${์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ.data},`;
      ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ = ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ.next;
    }
    // JSON.parse : ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค
    return JSON.parse(`[${s.slice(0, -1)}]`);
  }

  length() {
    return this.๋ฐ์ดํ„ฐ์ˆ˜;
  }

  append(data) {
    let ์ƒˆ๋กœ์šด๋…ธ๋“œ = new Node(data);
    // ๋งˆ์ง€๋ง‰ ๊ฐ’์ด null์—์„œ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๊ฐ€ ๋จ
    this.tail.next = ์ƒˆ๋กœ์šด๋…ธ๋“œ;
    // ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋Š” ์ƒˆ๋กœ์šด ๋…ธ๋“œ๊ฐ€ ๋จ
    this.tail = ์ƒˆ๋กœ์šด๋…ธ๋“œ;
    this.๋ฐ์ดํ„ฐ์ˆ˜ += 1;
  }

  toString() {
    let ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ = this.head;
    ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ = ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ.next;

    let s = "";
    for (let i = 0; i < this.๋ฐ์ดํ„ฐ์ˆ˜; i++) {
      s += `${์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ.data},`;
      ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ = ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ.next;
    }
    // ๋งจ ๋งˆ์ง€๋ง‰์— ์ฝค๋งˆ์™€ ๋„์–ด์“ฐ๊ธฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ -1 ์ž‘์„ฑ
    return s.slice(0, -1);
  }

  insert(index, data) {
    let ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ = this.head;
    ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ = ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ.next;

    for (let i = 0; i < index - 1; i++) {
      ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ = ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ.next;
    }
    let ์ƒˆ๋กœ์šด๋…ธ๋“œ = new Node(data);
    // ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ ์ง€์›Œ์ง
    ์ƒˆ๋กœ์šด๋…ธ๋“œ.next = ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ.next;
    ์ˆœํšŒ์šฉํ˜„์žฌ๋…ธ๋“œ.next = ์ƒˆ๋กœ์šด๋…ธ๋“œ;
    // ๋‚ด๊ฐ€ ๋†“์ณค๋˜ ๋ถ€๋ถ„
    // ๋ฐ์ดํ„ฐ์ˆ˜ ์ถ”๊ฐ€ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€์›Œ์ง€์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
    this.๋ฐ์ดํ„ฐ์ˆ˜ += 1;
  }
}

// console
l = new LinkedList();
l.append(1);
l.append(2);
l.append(3);
l.append(10);
l.append(20);
l.append(30);
l.length();
l.insert(3, 100);
l.length();
// fullData ๋’ค์— ๊ด„ํ˜ธ์—†์ด ์‹คํ–‰
l.fullData; // (7) [1, 2, 3, 100, 10, 20, 30]

๐Ÿ“Ž ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์›์†Œ๋“ค์„ ๋ฒˆํ˜ธ์ˆœ์ด๋‚˜ ์‚ฌ์ „ ์ˆœ์„œ์™€ ๊ฐ™์ด ์ผ์ •ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์—ด๊ฑฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ํšจ์œจ์ ์ธ ์ •๋ ฌ์€ ํƒ์ƒ‰์ด๋‚˜ ๋ณ‘ํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ฒ˜๋Ÿผ(์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ์—์„œ ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š”) ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ตœ์ ํ™”ํ•˜๋Š”๋ฐ ์ค‘์š”ํ•˜๋‹ค.
  • ์ถœ์ฒ˜ : https://ko.wikipedia.org/wiki/์ •๋ ฌ_์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿ“Ž ์ •๋ ฌ - ์„ ํƒ์ •๋ ฌ(selection sort)

  • ์„ ํƒ์ •๋ ฌ = ์ œ์ž๋ฆฌ ๋น„๊ต ์ •๋ ฌ
    => ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๊ณ  ๊ฐ’์„ ์ตœ์ดˆ ์œ„์น˜์™€ ๋ฐ”๊ฟ”์นœ ๋‹ค์Œ ๋ฆฌ์ŠคํŠธ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณต
    => ๊ตํ™˜ ๊ณผ์ •์€ n๊ฐœ๋ฅผ ๋„˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ตํ™˜ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ƒํ™ฉ์—์„œ ์œ ์šฉ
  • ๋ณต์žก๋„ : O(n^2)
    => ํฐ ๋ฆฌ์ŠคํŠธ์—๋Š” ๋น„ํšจ์œจ์ , ์‚ฝ์ž…์ •๋ ฌ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ 
  • ์„ ํƒ์ •๋ ฌ์€ ๋‹จ์ˆœํ•จ์ด ํŠน์ง•์ด๋ฉฐ ํŠน์ •ํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๋” ๋ณต์žกํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ์„ฑ๋Šฅ์ƒ ์šฐ์œ„์— ์žˆ๋‹ค.
  • ์ถœ์ฒ˜ : https://ko.wikipedia.org/wiki/์„ ํƒ_์ •๋ ฌ
// ์ง์ ‘ ํ•ด๋ณด๊ธฐ
let ์ „ = [199, 22, 33, 12, 32, 64, 72, 222, 233];
let ํ›„ = [];

let ์ „ = [199, 22, 33, 32, 64, 72, 222, 233]; // ์ˆœํšŒํ•˜๋ฉฐ ์ตœ์†Ÿ๊ฐ’(12)๋ฅผ ์ฐพ์•„ ํ›„์— ๋„ฃ์–ด์คŒ
let ํ›„ = [12]; // ์ˆœํšŒ ์•ˆํ•จ

let ์ „ = [199, 33, 32, 64, 72, 222, 233];
let ํ›„ = [12, 22];

let ์ „ = [199, 33, 64, 72, 222, 233];
let ํ›„ = [12, 22, 32];

// ์ฝ”๋“œ ์‹œ์ž‘
let ์ž…๋ ฅ๊ฐ’ = [199, 22, 33, 12, 32, 64, 72, 222, 233];
let ์ •๋ ฌ๋œ๋ฐฐ์—ด = [];

let ๊ธธ์ด = ์ž…๋ ฅ๊ฐ’.length;

// ์ฃผ์˜์‚ฌํ•ญ : pop์„ ํ•˜๋ฉด length๊ฐ€ ์ค„์–ด๋“ ๋‹ค
// for (let i; i < ์ž…๋ ฅ๊ฐ’.length; i++) {
//   console.log(์ž…๋ ฅ๊ฐ’.pop());
//   console.log(i);
// }

for (let i = 0; i < ๊ธธ์ด; i++) {
  let ์ตœ์†Ÿ๊ฐ’ = Math.min(...์ž…๋ ฅ๊ฐ’);
  ์ •๋ ฌ๋œ๋ฐฐ์—ด.push(์ตœ์†Ÿ๊ฐ’);
  ์ž…๋ ฅ๊ฐ’.splice(์ž…๋ ฅ๊ฐ’.indexOf(์ตœ์†Ÿ๊ฐ’), 1);
}

// ์œ„์˜ for๋ฌธ๊ณผ ๊ฐ™์€ ๋™์ž‘
// !! = ๋ถ€์ •์˜ ๋ถ€์ •
// while (!!์ž…๋ ฅ๊ฐ’.toString()) {
//   let ์ตœ์†Ÿ๊ฐ’ = Math.min(...์ž…๋ ฅ๊ฐ’);
//   ์ •๋ ฌ๋œ๋ฐฐ์—ด.push(์ตœ์†Ÿ๊ฐ’);
//   ์ž…๋ ฅ๊ฐ’.splice(์ž…๋ ฅ๊ฐ’.indexOf(์ตœ์†Ÿ๊ฐ’), 1);
// }

console.log(์ •๋ ฌ๋œ๋ฐฐ์—ด); // (9) [12, 22, 32, 33, 64, 72, 199, 222, 233]

// ์„ ํƒ์ •๋ ฌ - ๋ฉ”์„œ๋“œ ์ตœ์†Œํ™”
// ์ œ๋Œ€๋กœ ํ•˜๋ ค๋ฉด ์ž๋ฆฌ ๋ฐ”๊พธ๋Š” ๊ฒƒ๊นŒ์ง€
const arr = [199, 22, 33, 12, 32, 64, 72, 222, 233];

function selectionSort(arr) {
  for (let i = 0; i < arr.length; i++) {
    let min_index = i;
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[min_index] > arr[j]) {
        min_index = j;
      }
    }

    // ์ž๋ฆฌ๋ฐ”๊ฟˆ
    let temp = arr[min_index];
    arr[min_index] = arr[i];
    arr[i] = temp;
  }

  return arr;
}

console.log(selectionSort(arr)); // (9) [12, 22, 32, 33, 64, 72, 199, 222, 233]

๐Ÿ“Ž ์ •๋ ฌ - ์‚ฝ์ž…์ •๋ ฌ(insertion sort)

  • ์‚ฝ์ž…์ •๋ ฌ์€ ์ž‘์€ ๋ฆฌ์ŠคํŠธ์™€ ๋Œ€๋ถ€๋ถ„ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ์— ์ƒ๋Œ€์ ์œผ๋กœ ํšจ์œจ์ ์ธ ๋‹จ์ˆœํ•œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    => ๋” ๋ณต์žกํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ผ๋ถ€๋ถ„์œผ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•จ
  • ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์•ž์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•˜์—ฌ, ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ ์‚ฝ์ž…ํ•จ์œผ๋กœ์จ ์ •๋ ฌ์„ ์™„์„ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๋ณต์žก๋„ : O(n^2)
  • ์ถœ์ฒ˜ : https://ko.wikipedia.org/wiki/%EC%82%BD%EC%9E%85_%EC%A0%95%EB%A0%AC
// ์ง์ ‘ ํ•ด๋ณด๊ธฐ
let ์ „ = [199, 22, 33, 12, 32, 64, 72, 222, 233];
let ํ›„ = [];

let ์ „ = [22, 33, 12, 32, 64, 72, 222, 233]; // ์ˆœํšŒ๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋จผ์ € ์‚ฝ์ž…
let ํ›„ = [199]; // ์ˆœํšŒํ•จ

let ์ „ = [33, 12, 32, 64, 72, 222, 233];
let ํ›„ = [22, 199];

// ์ฝ”๋“œ ์‹œ์ž‘
let ์ž…๋ ฅ๊ฐ’ = [199, 22, 33, 12, 32, 64, 72, 222, 233];
let ์ •๋ ฌ๋œ๋ฐฐ์—ด = [];
let ๋ฐฐ์—ด์˜๊ธธ์ด = ์ž…๋ ฅ๊ฐ’.length;

function ์‚ฝ์ž…๊ฐ’์ด๋“ค์–ด๊ฐˆ์ธ๋ฑ์Šค(์ •๋ ฌ๋œ๋ฐฐ์—ด, ์‚ฝ์ž…๊ฐ’) {
  for (const i in ์ •๋ ฌ๋œ๋ฐฐ์—ด) {
    if (์‚ฝ์ž…๊ฐ’ < ์ •๋ ฌ๋œ๋ฐฐ์—ด[i]) {
      return 1;
    }
  }
  return ์ •๋ ฌ๋œ๋ฐฐ์—ด.length;
}

for (let i = 0; i < ๋ฐฐ์—ด์˜๊ธธ์ด; i++) {
  let ์‚ฝ์ž…๊ฐ’ = ์ž…๋ ฅ๊ฐ’.shift();
  let ์ธ๋ฑ์Šค = ์‚ฝ์ž…๊ฐ’์ด๋“ค์–ด๊ฐˆ์ธ๋ฑ์Šค(์ •๋ ฌ๋œ๋ฐฐ์—ด, ์‚ฝ์ž…๊ฐ’);
  ์ •๋ ฌ๋œ๋ฐฐ์—ด.splice(์ธ๋ฑ์Šค, 0, ์‚ฝ์ž…๊ฐ’);
  console.log(
    `์ธ๋ฑ์Šค: ${์ธ๋ฑ์Šค}\n์‚ฝ์ž…๊ฐ’: ${์‚ฝ์ž…๊ฐ’}\n์ •๋ ฌ๋œ๋ฐฐ์—ด: ${์ •๋ ฌ๋œ๋ฐฐ์—ด}`
  );
}



๐Ÿ“Ž ์ •๋ ฌ - ๋ณ‘ํ•ฉ์ •๋ ฌ(merge sort)

  • ๋น„๊ต ๊ธฐ๋ฐ˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    => ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ 1 ์ดํ•˜์ด๋ฉด ์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒƒ์œผ๋กœ ๋ณธ๋‹ค.
    => ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ,
    • ๋ถ„ํ• (divide) : ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ž˜๋ผ ๋น„์Šทํ•œ ํฌ๊ธฐ์œ„ ๋‘ ๋ถ€๋ถ„ ๋ฆฌ์ŠคํŠธ๋กœ ๋‚˜๋ˆ”
    • ์ •๋ณต(conquer) : ๊ฐ ๋ถ€๋ถ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋ณ‘ํ•ฉ์ •๋ ฌ์„ ์ด์šฉํ•ด ์ •๋ ฌ
    • ๊ฒฐํ•ฉ(combine) : ๋‘ ๋ถ€๋ถ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ํ•˜๋‚˜์˜ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋กœ ํ•ฉ๋ณ‘. ์ด๋•Œ ์ •๋ ฌ ๊ฒฐ๊ณผ๊ฐ€ ์ž„์‹œ ๋ฐฐ์—ด์— ์ €์žฅ๋œ๋‹ค.
    • ๋ณต์‚ฌ(copy) : ์ž„์‹œ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๊ฒฐ๊ณผ๋ฅผ ์›๋ž˜ ๋ฐฐ์—ด์— ๋ณต์‚ฌํ•œ๋‹ค.
  • ๋ณต์žก๋„ : worst์™€ best ๋ชจ๋‘ O(n log n)
  • ์ถœ์ฒ˜ : https://ko.wikipedia.org/wiki/%ED%95%A9%EB%B3%91_%EC%A0%95%EB%A0%AC
// let ์ž…๋ ฅ๊ฐ’ = [5, 10, 66, 77, 54, 32, 11, 15];
// let ์ •๋ ฌ๋œ๋ฐฐ์—ด = [];

// ๋ถ„ํ• (์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด 8๊ฐœ๋กœ ์กฐ์ •)
[5, 10, 66, 77], [54, 32, 11, 15]
[5, 10], [66, 77], [54, 32], [11, 15]
[5], [10], [66], [77], [54], [32], [11], [15]

//์ •๋ณต(0๋ฒˆ์งธ๋ผ๋ฆฌ ๋น„๊ต!)
[5, 10], [66, 77], [32, 54], [11, 15]
[5, 10, 66, 77], [11, 15, 32, 54]
[5, 10, 11, 15, 32, 54, 66, 77]

let ์ž…๋ ฅ๊ฐ’ = [5, 10, 66, 77, 54, 32, 11, 15];
let ์ •๋ ฌ๋œ๋ฐฐ์—ด = [];

function ๋ณ‘ํ•ฉ์ •๋ ฌ(์ž…๋ ฅ๋ฐฐ์—ด) {
  // ๋ถ„ํ• 
  let ์ž…๋ ฅ๋ฐฐ์—ด์˜๊ธธ์ด = ์ž…๋ ฅ๋ฐฐ์—ด.length;
  let ๊ฒฐ๊ณผ๊ฐ’ = [];
  if (์ž…๋ ฅ๋ฐฐ์—ด์˜๊ธธ์ด <= 1) {
    // ์žฌ๊ท€ํ•จ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์ข…๋ฃŒ์กฐ๊ฑด์„ return์œผ๋กœ ๋„ฃ์–ด์ค€ ๊ฒƒ
    return ์ž…๋ ฅ๋ฐฐ์—ด;
  }

  // ์ค‘๊ฐ„๊ฐ’ : ๋‘˜๋กœ ๋‚˜๋ˆ„๊ธฐ ์œ„ํ•ด์„œ
  let ์ค‘๊ฐ„๊ฐ’ = parseInt(์ž…๋ ฅ๋ฐฐ์—ด์˜๊ธธ์ด / 2);
  // ๋‘˜๋กœ ๋‚˜๋ˆ„๊ณ  ๋˜ ๋ณ‘ํ•ฉ์ •๋ ฌ => ์žฌ๊ท€
  let ๊ทธ๋ฃนํ•˜๋‚˜ = ๋ณ‘ํ•ฉ์ •๋ ฌ(์ž…๋ ฅ๋ฐฐ์—ด.slice(0, ์ค‘๊ฐ„๊ฐ’));
  let ๊ทธ๋ฃน๋‘˜ = ๋ณ‘ํ•ฉ์ •๋ ฌ(์ž…๋ ฅ๋ฐฐ์—ด.slice(์ค‘๊ฐ„๊ฐ’));

  while (๊ทธ๋ฃนํ•˜๋‚˜.length != 0 && ๊ทธ๋ฃน๋‘˜.length != 0) {
    if (๊ทธ๋ฃนํ•˜๋‚˜[0] < ๊ทธ๋ฃน๋‘˜[0]) {
      ๊ฒฐ๊ณผ๊ฐ’.push(๊ทธ๋ฃนํ•˜๋‚˜.shift());
    } else {
      ๊ฒฐ๊ณผ๊ฐ’.push(๊ทธ๋ฃน๋‘˜.shift());
    }
  }

  // ์ •๋ณต
  // ๋„ฃ๊ณ  ๋‚จ์„ ๊ฐ’๋“ค์„ ์œ„ํ•ด
  while (๊ทธ๋ฃนํ•˜๋‚˜.length != 0) {
    ๊ฒฐ๊ณผ๊ฐ’.push(๊ทธ๋ฃนํ•˜๋‚˜.shift());
  }

  while (๊ทธ๋ฃน๋‘˜.length != 0) {
    ๊ฒฐ๊ณผ๊ฐ’.push(๊ทธ๋ฃน๋‘˜.shift());
  }

  // ์ด ๊ฒฐ๊ณผ๊ฐ’์€ ๋‹ค์‹œ ๋ณ‘ํ•ฉ์ •๋ ฌ๋กœ ๋“ค์–ด๊ฐ„๋‹ค
  return ๊ฒฐ๊ณผ๊ฐ’;
}

console.log(๋ณ‘ํ•ฉ์ •๋ ฌ(์ž…๋ ฅ๊ฐ’)); // (8) [5, 10, 11, 15, 32, 54, 66, 77]

๐Ÿ“Ž ์ •๋ ฌ - ํ€ต์ •๋ ฌ(quick sort)

// ํ”ผ๋ด‡๊ฐ’(pivot)์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ(ํ”ผ๋ด‡๊ฐ’์€ ์ฒ˜์Œ๊ฐ’, ์ค‘๊ฐ„๊ฐ’, ๋งˆ์ง€๋ง‰ ๊ฐ’)
// ์‹ค๋ฌด์—์„œ๋Š” worst์ผ ๊ฒฝ์šฐ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํ”ผ๋ด‡์„ ๋žœ๋คํ•˜๊ฒŒ ์ฃผ๋Š” ๊ฒฝ์šฐ๋‚˜, ํ”ผ๋ด‡์„ 2๊ฐœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ.
let ์ž…๋ ฅ๊ฐ’ = [66, 77, 54, 32, 10, 5, 11, 15];

//ํ”ผ๋ด‡๊ฐ’ : 66
[54, 32, 10, 5, 11, 15] + [66] + [77]

//ํ”ผ๋ด‡๊ฐ’ : 54(66๊ณผ 77์€ ๊ฐ’์ด ํ•œ ๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋”์ด์ƒ ์žฌ๊ท€๋กœ ํ˜ธ์ถœ๋˜์ง€ ์•Š์Œ.)
[32, 10, 5, 11, 15], [54] + [66] + [77]

//ํ”ผ๋ด‡๊ฐ’ : 32
[10, 5, 11, 15], [32] + [54] + [66] + [77]

//ํ”ผ๋ด‡๊ฐ’ : 10 
[5] + [10], [11, 15] + [32] + [54] + [66] + [77]

//ํ”ผ๋ด‡๊ฐ’ : 11
[5] + [10] + [11] + [15] + [32] + [54] + [66] + [77]

// ์ฝ”๋“œ ์‹œ์ž‘
let ์ž…๋ ฅ๊ฐ’ = [66, 77, 54, 32, 10, 5, 11, 15];

function ํ€ต์ •๋ ฌ(์ž…๋ ฅ๋ฐฐ์—ด) {
  let ์ž…๋ ฅ๋ฐฐ์—ด์˜๊ธธ์ด = ์ž…๋ ฅ๋ฐฐ์—ด.length;
  
  if (์ž…๋ ฅ๋ฐฐ์—ด์˜๊ธธ์ด <= 1) {
    return ์ž…๋ ฅ๋ฐฐ์—ด;
  }

  // ํ”ผ๋ฒ—๊ฐ’ : ๊ธฐ์ค€์ 
  let ํ”ผ๋ฒ—๊ฐ’ = [์ž…๋ ฅ๋ฐฐ์—ด.shift()];
  let ๊ทธ๋ฃนํ•˜๋‚˜ = [];
  let ๊ทธ๋ฃน๋‘˜ = [];

  for(let i in ์ž…๋ ฅ๋ฐฐ์—ด) {
    if (์ž…๋ ฅ๋ฐฐ์—ด[i] < ํ”ผ๋ฒ—๊ฐ’) {
      ๊ทธ๋ฃนํ•˜๋‚˜.push([์ž…๋ ฅ๋ฐฐ์—ด[i]]);
    } else {
      ๊ทธ๋ฃน๋‘˜.push([์ž…๋ ฅ๋ฐฐ์—ด[i]]);
    }
  }

  console.log(`๊ทธ๋ฃนํ•˜๋‚˜ : ${๊ทธ๋ฃนํ•˜๋‚˜}\n๊ทธ๋ฃน๋‘˜ : ${๊ทธ๋ฃน๋‘˜}\nํ”ผ๋ฒ—๊ฐ’ : ${ํ”ผ๋ฒ—๊ฐ’}`);
  return ํ€ต์ •๋ ฌ(๊ทธ๋ฃนํ•˜๋‚˜).concat(ํ”ผ๋ฒ—๊ฐ’, ํ€ต์ •๋ ฌ(๊ทธ๋ฃน๋‘˜));
}

console.log(ํ€ต์ •๋ ฌ(์ž…๋ ฅ๊ฐ’)); 

๐Ÿ“ ์˜จ๋ผ์ธ ๊ฐ•์˜ ์ˆ˜๊ฐ•

๐Ÿ“Ž ์ฝ”๋“œ๋ผ์ด์–ธ - ์‹ค๊ฒ€์— ์˜ค๋ฅด๋Š” ์„ธ๋ ๊ฒŒํ‹ฐ ๋™๋ฌผ ํ…Œ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ


๋งˆ๋ฌด๋ฆฌ

  • ๋‚ด์ผ LINE CAREERS ํด๋ก  ์ฝ”๋”ฉ ๋๋‚˜๋Š” ๋‚ !
    => ๊ฝค ๋งŽ์ด ํ•ด์„œ ๋ฟŒ๋“œ์!
    => ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ์™„์„ฑํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค๋งŒ...
    => ํ•˜์ง€๋งŒ ์ •๋ง ์—ด์‹ฌํžˆ ํ–ˆ๋‹ค๊ตฌ์š”~ ํ˜ธํ˜ธํ˜ธ
  • ์ผ๋‹จ ์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค
    => ์—ด์‹ฌํžˆ ํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ ๊ธฐ์šด์ด ์ชฝ ๋น ์ง€๋„ค์š”๐Ÿค—

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