전체 글

전체 글

    2020 카카오 인턴십 - 키패드 누르기 (Javascript)

    더보기 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 4-1..

    [Javascript] 힙 정렬(Heap sort) - min heap 구현

    // min heap // n: parent , 2*n+1 : left child, 2*n+2 : right child class Heap { constructor() { this.heap = [] } swap(a, b) { [this.heap[a], this.heap[b]] = [this.heap[b] , this.heap[a]] } size() { return this.heap.length } print() { console.log(this.heap) } push(value) { let idx, parent = 0 this.heap.push(value) idx = this.heap.length-1 parent = Math.floor((idx-1)/2) while(this.heap[parent] > v..

    [Javascript] 힙 정렬(Heap sort) - max heap 구현

    // max heap // n : parent, 2*n+1 : left child, 2*n+2: right child class Heap { constructor() { this.heap = [] } swap(a, b) { // 구조분해 할당 문법으로 swap 가능 [this.heap[a], this.heap[b]] = [this.heap[b], this.heap[a]] } size() { return this.heap.length } push(value) { // 맨뒤에 추가 max heap 이므로 부모랑 비교해서 큰값을 부모랑 swap 해줘야함 this.heap.push(value) let idx = this.heap.length-1 let parent = Math.floor((idx-1)/2) wh..