일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- POD
- docker
- EKS
- elasticsearch
- s3
- 쿠버네티스
- intervals
- 자바스크립트
- leetcode
- K8S
- FastAPI
- asgi
- event loop
- Python
- EC2
- Kubernetes
- WSGI
- Service
- terraform
- asyncio
- Django
- Deployment
- YAML
- AWS
- IAM
- ebs
- IAC
- dockerfile
- ansible
- github
- Today
- Total
목록전체 글 (156)
궁금한게 많은 개발자 노트
start를 기준으로 오름차순으로 정렬된 겹치지 않는 구간 리스트가 주어졌을 때, 한 구간을 리스트에 삽입하는 문제입니다. 만약 삽입하는 과정에서 겹치는 구간이 발생하면 병합하여 하나의 구간을 만들어야 합니다. Binary Search로 삽입할 index를 구하고, 해당 index를 기준으로 좌우로 two pointer로 넓혀가며 겹치는 구간을 찾고, 겹치는 구간이 있다면 삭제 후 병합한 새 구간을 넣어서 해결하였습니다. #include class Solution { public: vector insert(vector& intervals, vector& newInterval) { vector::iterator insert_index = upper_bound(intervals.begin(), interva..
Binary Search Tree가 주어졌을 때, 한 노드를 제거하고 재배치한 BST를 반환하는 문제입니다. 여러 경우의 수가 있지만, 우선 한 노드를 삭제할 때 기본적인 규칙은 다음과 같습니다. 삭제할 노드의 자식 중 한쪽 노드만 존재하는 경우, 삭제할 노드 위치를 해당 노드로 변경 삭제할 노드의 자식 둘 다 존재하는 경우, 왼쪽 자식 노드를 삭제할 노드로 대체한다고 하면 왼쪽 자식 노드의 오른쪽 노드를 삭제할 노드의 오른쪽 자식의 가장 왼쪽 자식에 추가해주는 로직이 필요 (반대의 경우도 가능) 아래 링크를 참고하면 이해에 도움이 될 것 같습니다. https://leetcode.com/problems/delete-node-in-a-bst/solutions/1591176/c-simple-solution-..
막대의 높이가 담긴 배열이 주어졌을 때, 두 막대와 x축으로 담기는 물의 최대 양을 구하는 문제입니다. two pointer문제로 이차원 배열에서 시간 초과가 발생하는 문제를 해결합니다. 두 포인터 중 작은 쪽의 포인터를 변경하고, 넓이 구할 시 가로는 포인터 사이 거리이고, 높이는 작은 막대로 구합니다. #define max(a,b)((a) > (b) ? (a) : (b)) #define min(a,b)((a) > (b) ? (b) : (a)) class Solution { public: int maxArea(vector& height) { int answer = 0; int i = 0; int j = height.size() - 1; while (i < j) { if (height[i] < heigh..
Binary Tree가 주어졌을 때, level order로 순회하는 순서를 반환하는 문제입니다. BFS(Breadth-First-Search)로 접근하여 최상위 노드부터 넣고 자식들을 순서대로 넣으면서 level order로 순회합니다. /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, Tree..
Binary Tree가 주어졌을 때, 해당 트리가 균형 잡힌 트리인지를 확인하는 문제입니다. 균형 잡힌 트리는 서로 다른 노드를 루트 노드로 하는 서브 트리 사이에 높이 차이가 1이하인 노드들로 구성된 트리를 의미합니다. 마찬가지로 재귀를 이용하여 left, right child로 시작하는 서브 트리의 균형 여부를 확인하고, 해당 노드의 균형 여부는 각 left, right child subtree의 depth를 구하여 판단합니다. /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(n..