[JS] Toy2 27. binaryHeap

이번 과제에서 여러분들이 구현하셔야 할 것은 “노드가 정수인 이진 최소 힙” 입니다. storage는 배열이며 getRoot 메소드는 이미 구현되어 있습니다.

O(log n) 시간 복잡도를 지니도록 insertremoveRoot 메소드를 구현하세요. 이 메소드들은 BinaryHeap 객체에서 값을 추가하거나 제거하고, 변경된 값에 따라 내부 노드들을 정렬합니다. 메소드들이 실행된 후에도, 부모/자식 노드들은 여전히 이진 힙의 조건을 만족해야 합니다. 자세한 것은 “배경 설명”을 참조하세요.

BinaryHeap 객체의 this._compare 메소드는 전달된 첫 번째 인자가 두 번째 인자보다 작으면 true, 크면 false를 리턴합니다. 노드들을 비교할 때 사용하세요.

Continue reading

[JS] Toy4. bubbleSort

정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 버블 정렬(bubble sort)은 여러 정렬 알고리즘(삽입 정렬, 퀵 정렬, 병합 정렬, 기수 정렬 등) 중 가장 기본적인 알고리즘입니다.

버블 정렬 알고리즘은 아래와 같습니다.

  1. 첫 번째 요소가 두 번째 요소보다 크면, 두 요소의 위치를 바꿉니다. (swap)
  2. 두 번째 요소와 세 번째 요소보다 크면, 두 요소의 위치를 바꿉니다. (swap)
  3. 1, 2를 마지막까지 반복합니다. (마지막에서 두 번째 요소와 마지막 요소를 비교)
  4. 1~3의 과정을 한 번 거치게 되면, 가장 큰 요소가 배열의 마지막으로 밀려납니다.
  5. 1~3의 과정을 첫 요소부터 다시 반복합니다.
  6. 5를 통해 두 번째로 큰 요소가 배열의 마지막 바로 두 번째로 밀려납니다.
  7. 1~3의 과정을 총 n번(배열의 크기) 반복합니다.

이 모습이 마치 ‘거품이 밀려 올라가는 것과 같은 모습’과 같아서 bubble sort라고 부릅니다.

Continue reading

[JS] Toy2. fibonacci

아래와 같이 정의된 피보나치 수열 중 n번째 항의 수를 리턴해야 합니다.

  • 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1입니다. 그 다음 2번째 피보나치 수부터는 바로 직전의 두 피보나치 수의 합으로 정의합니다.
  • 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …

Continue reading

[JS] Toy1. rockPaperScissors

가위바위보 게임은 2인 이상의 사람이 동시에 ‘가위, 바위, 보’를 외치고 동시에 가위, 바위 또는 보 중에서 한 가지를 의미하는 손 모양을 내밀어 승부를 결정짓는 게임이다. 세 판의 가위바위보 게임을 할 경우, 한 사람은 세 번의 선택(예. 가위, 가위, 보)을 할 수 있습니다. 세 번의 선택으로 가능한 모든 경우의 수를 구하는 함수를 작성합니다.

Continue reading

Pagination


© 2020. by RIVER

Powered by RIVER