일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kubernetes
- dockerfile
- Network
- EC2
- ebs
- DevOps
- Django
- Deployment
- leetcode
- 자바스크립트
- EKS
- POD
- WSGI
- AZ-900
- elasticsearch
- asgi
- terraform
- IAC
- asyncio
- Python
- AZURE
- AWS
- K8S
- Service
- 쿠버네티스
- docker
- FastAPI
- ansible
- AZ-104
- event loop
- Today
- Total
목록Algorithm (30)
궁금한게 많은 개발자 노트
여러 구간들이 주어졌을 때, 겹치는 구간을 병합하여 겹치지 않는 구간들의 리스트를 반환하는 문제입니다. 먼저 구간들을 오름차순으로 정렬하고, 정답 리스트에 구간을 하나 추가하고 마지막 추가된 구간과 새로 들어갈 구간들이 겹치는지 판단하여 겹치는 경우 마지막 구간을 빼서 병합하고 다시 넣어주는 과정을 반복합니다. #include #define max(a,b)((a) > (b) ? (a) : (b)) class Solution { public: vector merge(vector& intervals) { sort(intervals.begin(), intervals.end()); vector answer; for (int i = 0; i < intervals.size(); i++) { int start = i..
우선순위 큐를 사용하여 가장 큰 두 돌을 꺼내 같으면 둘 다 제거하고, 차이가 있다면 큰 돌의 무게에서 작은 돌의 무게를 빼서 다시 큐에 넣어 마지막 남은 돌의 무게를 반환하는 문제입니다. 만약 모두 제거되었다면 0을 반환합니다. #define swap(a,b,t)((t) = (a), (a) = (b), (b) = (t)) class Solution { public: int heap[31] = {0,}; int heap_size = 0; void insert_heap(int item) { heap[++heap_size] = item; int current = heap_size; int temp; while (current /2 >= 1 && heap[current] > heap[current/2]) { ..
해당 문제는 이진 트리(Binary Tree)가 주어졌을 때, 서로 다른 두 노드의 가장 낮은 레벨의 공통 조상을 찾는 문제입니다. BST가 아닌 BT이기 때문에 BST의 조건을 이용하지 못하는 상황입니다. 문제의 제약 조건에서 서로 다른 두 노드는 항상 트리 내에 존재함을 보장합니다. 이 때는 재귀적으로 왼쪽 자식, 오른쪽 자식을 반환하면서 둘다 NULL이 아닌 경우는 해당 노드의 아래에 존재한다는 의미이므로 해당 노드가 LCA가 됩니다. 해당 노드와 p또는 q의 value와 같아서 윗레벨로 반환 된 경우 root에서 왼쪽만 NULL이 아니고 오른쪽은 NUL일 경우 왼쪽 자식의 더 아래에 한 노드가 존재한다는 의미이므로 반환된 왼쪽 노드가 LCA입니다. /** * Definition for a bina..
Binary Search Tree가 주어졌을 때, 서로 다른 두 노드의 가장 낮은 level의 공통 조상을 찾는 문제입니다. (Lowest Common Ancestor) BST의 특성을 잘 이해하여 한 노드의 값보다 크면 오른쪽 자식, 작으면 왼쪽 자식에 존재한다는 개념을 이용합니다. /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* ..
시험장에서 자주 사용하는 Heap에 대해 적어보려한다. Heap이란, 최솟값이나 최댓값을 빠르게 찾아 내기 위해 고안된 완전이진트리의 일종으로 우선순위큐라고도 불린다. (적다보니 트리에 대해서도 적어봐야지 싶다) Heap에는 최대힙(Max Heap), 최소힙(Min Heap)이 있는데 부모 자식노드 관계에 따라 정해진다. 예를들어, A가 B의 부모 노드라면, A의 key값과 B의 key값은 대소관계가 성립한다 (Max는 부모가 key값이 크다) -> key(T.parent(v)) key(v) 일반적으로 정렬을 해야할 상황이 생기면 Heap에 모두 넣고, 하나씩 빼면 정렬된 형태로 값을 얻을 수 있어서 자주 사용하며 시간복잡도는 O(logN)으로 Qu..