[LeetCode#110] Balanced Binary Tree
·
Algorithm/문제풀이
❒ Description날짜2024.09.22 (일)레벨Easy제목Balanced Binary Tree링크https://leetcode.com/problems/balanced-binary-tree/description/자료구조그래프시간 복잡도O(N) 이번 문제를 풀기 위해서는 Height-Balanced Binary Tree에 대한 이해가 필요하다.     ❒ Solutionpublic void isBalanced(TreeNode root) { return depth(root) != -1;}public int depth(TreeNode node) { if (node == null) return 0; int left = depth(node.left); int right = depth(..
Height-Balanced(높이 균형) Binary Tree
·
Algorithm/내용 정리
❒ Description[LeetCode#110] Balanced Binary Tree 문제를 풀면서 접하게 된 개념을 정리하자.     ❒ Height-Balanced Binary Tree1. Height-Balanced Binary Tree란?height-balanced Binary Tree는 트리의 모든 노드에서 왼쪽 서브트리와 오른쪽 서브트리의 높이 차가 1 이하인트리를 말한다. 즉, 트리의 각 노드에 대해 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 크게 나지 않도록 균형을맞춘 형태다. 이 균형 덕분에 탐색, 삽입, 삭제 등의 연산에서 시간 복잡도를 최소화할 수 있다.  2. 주요 특징 i ) 높이 차이 제한각 노드의 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 1 이하이다. ii ) 탐색 ..
[LeetCode#] Invert Binary Tree
·
Algorithm/문제풀이
❒ Description날짜2024.09.22 (토)레벨Easy제목Invert Binary Tree링크https://leetcode.com/problems/invert-binary-tree/자료구조그래프알고리즘X시간 복잡도O(n) 이번 문제는 재귀구조를 연습할 수 있는 좋은 문제였다. 다양한 풀이 방법을 통해 재귀에 익숙해지자.     ❒ Solution1. 새로운 노드 생성 DFSpublic invertTree(TreeNode root) { if (root == null) return null; // 1. 새로운 노드 생성 TreeNode inverted = new TreeNod(root.val); // 2. 새로운 노드의 left, right 설정 invert..
[LeetCode#687] Longest Univalue Path
·
Algorithm/문제풀이
❒ Description날짜2024.09.21 (토)레벨Medium제목Longest Univalue Path링크https://leetcode.com/problems/longest-univalue-path/submissions/1397321235/자료구조트리알고리즘X시간 복잡도O(n) 543. Diameter of Binary Tree와 굉장히 유사한 문제이다.     ❒ 문제 분석부모-노드의 value와 자식-노드의 value가 동등한지를 판단하여야 하는 문제이다. 이 문제 또한 재귀를 통해 Left, Right 자식 트리의 깊이를 파악함과 동시에 가장 긴 경로를 파악해야 한다.위 그림에서 리프노드의 1과 1은 부모노드의 값인 4와 동일하지 못하기 때문에 문제의 요구사항에 충족하지 못한다.     ❒ S..
[LeetCode#455] Assign Cookies
·
Algorithm/문제풀이
❒ Description레벨Easy날짜2024.09.19 (목)제목Assign Cookies링크https://leetcode.com/problems/assign-cookies/description/자료구조배열알고리즘그리디시간 복잡도O(NlogN)     ❒ 문제 분석우선 각 배열의 의미를 잘 이해해야 한다.g 배열 : i번 째 아이들를 만족시킬 수 있는 쿠키의 크기들의 집합i 배열 : 각 쿠키의 크기를 나타낸 집합예를 들어 g = {1, 2, 3}, s = {1, 1} 이라면 최대 1명의 아이만 만족할 수 있다.s[1]은 g[1]을 만족시킬 수 있다.s[2]은 g[2]을 만족시킬 수 없다.s[2]은 g[3]을 만족시킬 수 없다.     ❒ Solutionpublic int findContentChildr..
[LeetCode#134] Gas Station
·
Algorithm/문제풀이
❒ Desciption날짜2024.09.18 (수)레벨Medium제목Gas Station링크https://leetcode.com/problems/gas-station/description/자료구조배열알고리즘그리디시간 복잡도O(N) 문제를 풀이할 때 PriorityQueue와 이중 while 문을 통해 풀이를 하였다.하지만 이는 굉장히 메모리 측면에서 비효율적인 풀이였다.     ❒ 문제 분석문제에서는 gas 배열과 cost 배열을 input으로 준다.int[] gas : 현재 위치에 있는 주요소가 보관하고 있는 gas량int[] cost : 해당 위치의 주유소로 이동하기 위해 필요한 gas량그리고 모든 주유소를 원형으로 연결되어 있다.문제의 목적은 주어진 gas와 cost 배열을 가지고, 어디서 출발해야..
Dijkstra & Floyd-Warshall
·
Algorithm/내용 정리
❒ Description알고리즘 문제를 풀면서 Dijkstra 알고리즘과 Floyd-Warshall 알고리즘을 학습했다.이제 이 두 알고리즘의 차이를 정리해보자.     ❒ 차이점다익스트라(Dijkstra) 알고리즘과 플로이드-워샬(Floyd-Warshall) 알고리즘은 모두 최단 경로를 찾는알고리즘이지만, 두 알고리즘 간에는 여러 차이가 있다.  1. 적용 대상 및 문제 유형다익스트라 알고리즘은 하나의 시작점에서 모든 정점으로의 최단 경로를 찾는데 사용된다.단일 출발점 최단 경로 문제에 적합하다.주로 가중치가 양수인 그래프에 사용된다.그래프가 희소(Sparse)할 때 효율적이다. (간선의 수가 적을 때) 반면에 플로이드-워샬 알고리즘은모든 정점 간의 최단 경로를 찾는데 사용된다.모든 정점에서 다른 모든..
[LeetCode#621] Task Scheduler
·
Algorithm/문제풀이
❒ Description날짜2024.09.17 (화)제목Task Scheduler링크https://leetcode.com/problems/task-scheduler/description/자료구조배열 & 우선순위 큐알고리즘그리디시간 복잡도O(NlongN) 아이디어도 생각나지 않았던 문제였다.     ❒ 문제 분석이번 문제는 주어진 task를 모두 수행하기 위한 최소 횟수를 출력하는 것이다. 그리고 동일한 task를 수행하기 위해선주어진 interval을 신경써줘야 한다. 문제에서 변수 `n`을 interval로 제시해준다. 예를 들어 interval이 3이라면 동일한 `A` 작업을 마무리하기 위해서는 `A _ _ _ A` 와 같이 3번의 interval이 필요하다. 여기서 한 가지 규칙을 발견할 수 있다...