| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 힙정의
- 힙트리
- 힙성질
- 원시타입
- 함수표현
- 호이스팅
- 상수시간
- 함수선언
- 해시테이블
- 알고리즘
- 백준
- 참조타입
- quadratic probing
- 해시함수
- heapify
- 자료구조
- 리렌더링
- 참조값
- 리액트
- 삽입
- 균형이진트리
- 원시값
- literal
- 자바스크립트
- 얕은비교
- 옵셔널체이닝
- 분할정복
- 리터럴
- hash table
- null병합 연산자
- Today
- Total
목록전체 글 (21)
천천히 하지만 더 멀리
많은 프론트앤드 개발자들은 스크롤 이벤트를 활용하여 개발(대표적으로 infinite scroll)을 하는 경우가 많이 있을것입니다. 한번의 스크롤로도 많은 스크롤 이벤트가 불리기 때문에 throttle 기법으로 이벤트를 처리하곤 합니다. throttle 기법을 rxjs 이용하여 스트림화된 이벤트를 처리하는 코드를 작성해보겠습니다. throttle 이란? 이벤트가 처음 발생하고 throttle Time 으로 지정한 시간동안 발생하는 이벤트는 무시하는 기법 구현 코드 import { ReactNode, useEffect, useRef } from 'react' import { fromEvent, throttle, interval, Subject } from 'rxjs' const subject$ = new ..
css 스타일 position 속성값을 공부하며 정리해 보았습니다. 1. Static position 의 기본값으로서 HTML 문서의 흐름에 따라 배치되는 방법입니다. position 속성에 아무것도 적어주지 않으면 static 이 지정됩니다. 위치를 지정하는 top, bottom, left, right 값의 영향을 받지 않습니다. position 이 static 일때는 top, left 속성이 적용이 안되는것을 확인할수 있습니다. 2. Relative static 요소와 마찬가지로 HTML 문서의 흐름에 따라 배치되지만, 기존의 자신의 위치에서 상대적인 offset 이 적용됩니다. 다시말해서 top, bottom, left, right 속성이 자기자신 기준에서 상대적으로 offset 이 적용됩니다. p..
https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net const input = ['4 7', '6 13', '4 8', '3 6', '5 12'] const [a, ...b] = input; const [cases, weight] = a.split(' ').map(elem => Number(elem)) const weightValue = b.map(elem => elem.split('..
퀵소트는 분할정복 알고리즘 중의 하나입니다. 분할정복이라면 무엇일까요? 간단히 얘기하면 주어진 문제를 더 작은문제로 쪼개어 재귀적으로 풀어 결과를 모아 더 큰 문제를 푸는 것입니다. 퀵소트에서 분할 정복 알고리즘이 어떻게 적용되었을까요? 차근차근 한번 알아보겠습니다. 1. 퀵소트 정의 1. 분할 먼저 정렬하고자 하는 배열에서 임의의 피봇 값을 하나 정합니다. 피봇 값을 잡는 방법은 여러가지가 있는데 보통은 배열의 중간에 있는 값으로 잡습니다. 그 피봇을 기준으로 피봇의 왼쪽 배열은 피봇 보다 작은 값, 피봇의 오른쪽 배열은 피봇보다 큰 값으로 왼쪽과 오른쪽으로 "분할" 합니다. 2. 정복 분할을 하고 난 왼쪽 배열과 오른쪽 배열의 크기가 0이나 1이 될 때까지 재귀적으로 분할정복을 반복합니다. 피봇을 정..
이진탐색트리(BST) 는 부모노드의 왼쪽 자식은 부모노드 키값보다 작은 노드들이 오른쪽 자식은 부모노드 키값보다 큰 노드들이 위치하게 됩니다. 이진탐색트리의 검색, 삽입, 삭제 로직은 아래 글에서 확인해주세요 ^^ 👇🏻👇🏻👇🏻👇🏻 https://p-james-y.tistory.com/19 이진 탐색 트리 ( Binary Search Tree ) 이진 트리를 탐색에 조금더 활용하기 위해서 이진 탐색 트리를 정의 한다. 이진 탐색 트리(BST) 는 이진트리이면서 다음 두 조건을 만족해야 한다. 1. 각 노드의 왼쪽 서브트리의 키값은 노드의 키 p-james-y.tistory.com 이진탐색트리의 연산 시간복잡도는 최대 트리의 높이인 O(h) 입니다. 높이가 (데이터 갯수(n) - 1) 일때는 시간복잡도는 O..
이진 트리를 탐색에 조금더 활용하기 위해서 이진 탐색 트리를 정의 한다. 이진 탐색 트리(BST) 는 이진트리이면서 다음 두 조건을 만족해야 한다. 1. 각 노드의 왼쪽 서브트리의 키값은 노드의 키값보다 작거나 같아야 하고 2. 각 노드의 오른쪽 서브트리의 키값은 노드의 키값보다 커야 한다. 위 두 조건을 모든 이진트리 노드가 만족하면 이진 탐색 트리라고 한다. 이진 탐색 트리를 클래스로 구현해보면 다음과 같다. class BST: def __init__(self): self.root = None self.size = 0 def __len__(self): return self.size def __iter__(self): return self.root.__iter__() # 노드 클래스에 있는 __iter..
이진트리에 대해 궁금하다면?? 👇🏻👇🏻 https://p-james-y.tistory.com/6 이진트리 ( binary tree ) 표현법 최대 2개의 자식노드를 가지는 트리자료 구조 용어 정리 루트 노드 ( root node ) : 맨 상위 노드, 부모가 없는 노드 리프 노트 ( leaf node ) : 자식이 없는 노드 레벨 ( level ) : 트리의 깊이 링크 ( link ) :. p-james-y.tistory.com 트리 순회란 ( tree traversal ) 각 노드를 한번씩 방문하는 것을 말한다 트리순회를 알아보기 전에 노드 클래스를 간단히 구현해보면 각각의 노드에는 key 가 있고, parent, left, right 링크가 존재합니다. 그림으로 알아보면 다음과 같습니다. 노드를 클래..
힙트리에서의 Insert, find_max, delete_max 를 알아보기전에 make heap tree 부분을 먼저 보고 공부해보시길 추천합니다. 👏🏻 https://p-james-y.tistory.com/16 Heap tree 만들기 ( make heap ) 힙트리에 대해 알고 싶다면 여기 👇🏻 https://p-james-y.tistory.com/9 이진트리 [ 힙 ] 이진트리 ( binary tree ) 는 부모 노드는 최대 2개의 자식노드를 가질수 있는 자료구조이다. 완전 이진 트리 모양이 p-james-y.tistory.com 1. Insert 노드를 Insert 를 하는데 힙 성질을 만족하도록 삽입한다. 아래 그림과 같이 힙 성질을 만족하는 트리가 있다고 하자. 여기에 Insert(15) ..