일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 공룡책
- gui
- vim-go
- a tour of go
- go channel
- JUCE라이브러리
- C++ gui 라이브러리
- c++ heap
- 알고리즘
- JUCE
- 프로그래밍
- C언어
- JUCE 튜토리얼
- Nebula
- BOJ
- 리듬게임
- OS
- C++ gui
- JUCE library
- tour of go
- go
- LOB
- 연결리스트
- C++ library
- 운영체제
- C++
- 자료구조
- Docker
- 백준
- 코딩
- Today
- Total
목록Programming (154)
CafeM0ca
A Tour of Go 정리 code convention은 https://github.com/golang/go/wiki/CodeReviewComments?fbclid=IwAR1RtGyVpP_iPKMqReVwKfufv0aD9J7JQfwuTNFnnVgxKbW5MMpMcqKCj-o 를 바탕으로 습관을 들이자. array var a [10]int 위 처럼 사이즈가 고정되어 있다. slice slice 자료형은 동적으로 크기가 달라진다. package main import "fmt" func addSliceValue(s []int) { for i := 0; i < len(s); i++ { s[i]++ } } func main() { primes := [6]int{2, 3, 5, 7, 11, 13} // prime..
12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include void DFS(int n, int d, int s, int arr[]){ if(d == n) { int last_ck = 1; int j = 10-n; for(int i=0; i
Hash Table key를 배열에 mapping하여 삽입/삭제/검색에 사용하는 자료구조. 배열에 key값들이 들어있어서 HashTable이라 한다. 시간복잡도는 $O(1)$의 우수한 성능을 보임 컴퓨터에서는 모든 문자를 숫자로 저장할 수 있음. 따라서 문자도 숫자로 치환하여 저장 가능 e.g) ABC는 각각 ASCII로 65,66,67임. 각 자리수에 대해 128진수로 바꿔주면 $65_128^2 + 66_128^1 + 67*128^0 = 1,073,475$ 이므로 ABC는 1,073,475로 저장된다. 현실적으로 봤을 때 ABC만해도 7자리 자연수로 반환되는데 긴 문자열들은 상상도 할 수 없을만큼 길 것이다. 따라서 해슁된 결과를 m으로 나눈 나머지를 value로 사용하면 메모리에 대한 문제는 해결할 ..
문제접근 2차원에서 상하좌우 방향으로 갈 수 있는 정점의 개수를 카운팅하는 문제 소스코드 #include #include #include #include using namespace std; char v[21][21]; int r,c; bool check_range(int x, int y) { // cout
정의 레드블랙트리는 다음 조건을 만족하는 이진탐색트리다. 조건 각 노드는 red 혹은 black이다. 루트 노드는 black이다. 모든 Leaf 노드(NIL 노드)는 black 노드다.(NIL노드: 트리의 각 leaf들이 공통적으로 가리키는 추상적인 노드. root의 부모도 NIL 노드) red 노드의 자식들은 전부 black이다.(red 노드가 연속되어 등장하지 않는다) 모든 노드에 대해서 그 노드로부터 자손인 리프노드에 이르는 모든 경로에는 동일한 개수의 black 노드가 존재한다. 레드블랙트리의 높이 루트노드로부터 NIL 노드를 만날 때까지의 높이를 측정한다. 노드 x의 높이 h(x)는 자신으로부터 리프노드까지의 가장 긴 경로에 포함된 정점의 개수이다. 노드 x의 블랙-높이 bh(x)는 x로부터 리..
많은 사람들이 문제 풀다가 리모컨을 부셔버리고 싶다는 그 문제.. 실생활 문제이다. 기본 채널이 100번 채널이다. 최소 채널은 0번 채널이고 최대 채널은 무제한이다. n번 채널로 이동하고 싶은데, 리모컨의 숫자부분이 몇 개 부셔서 있다. 채널은 위아래로 조작할 수 있다.(위아래는 부서지지 않음) 최소한 리모컨을 써서 n번째 채널로 이동할 때, 몇 번 동작하는가? 깊게 생각해보기 9번이 고장나고 99번 채널로 이동할 때 리모컨을 조작하는 프로세스는 아래 3가지다. 채널을 한칸 내린다. (1번 동작) 99번을 기준으로 위로 가장 가까운 채널을 찾는다.(100번 채널 -> '1' '0' '0' 3번 동작) 아래로 한칸 내린다. (1번 동작, 총 4번) 99번을 기준으로 아래로 가장 가까운 채널을 찾는다. (..
문제인식 문제링크 생활속에서 이러한 유형을 자주 접할 수 있다. 최저가를 찾는 문제다. (0) 가장 싼 패키지와 가장 싼 낱개의 가격을 찾는다. 낱개 6개 == 패키지 1개이므로, (1) 가격이 낱개 6개가 = 6이고, 패키지 > n >..
heap의 응용 '우선순위 큐는 힙을 응용하여 구현한다' 라는 오류를 갖지 않도록 조심하자. 스택을 배열이나 링크드 리스트로 구현하듯이 우선순위 큐를 heap으로 구현하는 것은 여러 구현체 중 한가지일 뿐이다. 힙과 마찬가지로 (1)최대 우선순위 큐 와 (2)최소 우선순위 큐 2종류가 있다. 우선순위 큐에서는 2가지 연산을 지원한다. insert(x): 새로운 원소 x를 삽입 O(log n) extract_max(): 최대(또는 최소)값을 삭제 O(log n) 이거 한번 해본 것 같은데? 최대 힙 이 문제를 풀면서 heap을 작살나게 정복했다. 구현 template class max_priority_queue{ public: max_priority_queue() { data[0] = 0; }; void ..
문제 해결 과정 자료구조 힙을 구현하여 insert와 remove 함수를 작성하여 해결한다. 문제의 제한시간은 1초이다. 따라서 insert 함수와 remove 함수를 O(log N) 시간으로 해결할 수 있도록 구현해야 한다. 시간이 빡빡한 문제이므로 cin.tie와 cin.sync_with_stdio를 꼭 해주자. 그리고 endl 대신 '\n' 으로 개행하자. 구현 #include #include using namespace std; template class max_heap{ public: max_heap(); void insert(type); void remove(int ); void print(); void heapify(int); type operator[](const int); ..
자료구조 heap 특징 merge sort처럼 추가 배열이 필요 없음 complete binary tree에 기반함으로 O(nlogn)의 성능을 보임 heap property max heap property: 부모는 자식보다 크거나 같음 min heap property: 부모는 자식보다 작거나 같음 논리적으로는 배열로 구현가능함 루트 노드: A[1] A[i]의 부모 = A[i/2] A[i]의 왼쪽 자식 = A[i*2] A[i]의 오른쪽 자식 = A[i*2+1] 소스코드 heap.hpp #include #include template class max_heap{ public: max_heap(); void insert(type); void remove(type); int find(type); void so..