| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 참조타입
- 자료구조
- 해시함수
- 삽입
- 옵셔널체이닝
- 알고리즘
- 균형이진트리
- literal
- quadratic probing
- 리터럴
- 해시테이블
- 힙정의
- 힙성질
- 리렌더링
- 원시값
- 얕은비교
- 호이스팅
- 상수시간
- heapify
- hash table
- 함수표현
- 자바스크립트
- 백준
- 분할정복
- 힙트리
- 원시타입
- 함수선언
- 참조값
- 리액트
- null병합 연산자
- Today
- Total
목록CS (13)
천천히 하지만 더 멀리
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) ..
힙트리에 대해 알고 싶다면 여기 👇🏻 https://p-james-y.tistory.com/9 이진트리 [ 힙 ] 이진트리 ( binary tree ) 는 부모 노드는 최대 2개의 자식노드를 가질수 있는 자료구조이다. 완전 이진 트리 모양이면서 힙성질을 따르면 힙 트리라고 한다. 1. 완전 이진 트리란? 마지막 레벨을 제 p-james-y.tistory.com 힙트리 만들기 힙트리로 만들기 위해서는 즉 힙 성질을 만족하는 트리를 만들기 위해서는 "heapify down" 연산을 수행해야 한다. heapify down 연산이란?? 1. 부모노드 key 가 두 자식노드이 key 보다 작은 경우 두 자식 노드 key 중 큰값과 바꿔준다. 2. 1번을 통해 부모노드와 자식노드가 혹시 바뀌었다면 리프노드의 부모노..
https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString() let num = Number(input); let cnt = 0; while (true) { if (num % 5 === 0) { cnt += (num/5); console.log(cnt) break } if (num < 0) { console.log(-1) break ..