2025/01 106

2140. Solving Questions With Brainpower

2140. Solving Questions With Brainpower class Solution: def mostPoints(self, questions: List[List[int]]) -> int: # brainpower[i]는 해당 문제를 푼 후 건너뛰어야 하는 문제의 개수를 의미 # 즉, 문제 i를 풀기로 선택하면, # 그 다음 연속된 brainpower[i]개의 문제는 풀 수 없음 n = len(questions) dp = [0] * (n+1) # dp[i]는 질문 i부터 끝까지 얻을 수 있는 최대 점수 for i in range(n - 1, -1, -1): # 역순으로 순회 point, b..

LeetCode/DP심화 2025.01.12

474. Ones and Zeroes

474. Ones and Zeroes https://youtu.be/miZ3qV04b1g?si=ieg8qGyjhzei0dQq class Solution: def findMaxForm(self, strs: List[str], m: int, n: int) -> int: # memoization dp = {} # 메모이제이션을 위한 딕셔너리 생성, 키는 (i, m, n), 값은 최대 부분집합 크기 def dfs(i, m, n): if i == len(strs): # 문자열 리스트를 모두 탐색했을 경우 return 0 # 부분집합을 더 이상 추가할 수 없으므로 0 반환 if (i, m, n) in ..

LeetCode/DP심화 2025.01.12

트리 종합 - leetcode (31)

B-트리(B-Tree)와 B+트리는 데이터베이스와 파일 시스템에서 효율적인 데이터 저장과 검색을 위해 사용되는 균형 트리 구조입니다. 그러나 LeetCode에서는 이러한 특정 트리 구조를 직접적으로 다루는 문제가 많지 않습니다. 대신, 이와 관련된 개념을 다룰 수 있는 이진 탐색 트리(BST), 균형 트리, 세그먼트 트리, 또는 **우선순위 큐(힙)**를 사용하는 문제들이 유사하게 학습할 수 있는 좋은 대안이 됩니다. B-트리와 B+트리의 특징은 주로 다음과 같습니다:B-트리: 균형 잡힌 다진 검색 트리로, 디스크 읽기 및 쓰기를 최적화합니다.B+트리: B-트리의 변형으로, 리프 노드가 연결 리스트 형태로 연결되어 순차 탐색에 효율적입니다. 추천 대체 문제들이진 탐색 트리(BST) 관련 문제:Conver..

구간 트리 (Interval Trees) - leetcode (11)

구간 트리 관련 문제는 주로 세그먼트 트리, Fenwick 트리, 또는 이진 탐색 트리를 활용합니다.Easy:Merge Intervals (LeetCode 56)설명: 주어진 구간을 병합합니다.핵심 개념: 정렬과 병합.Insert Interval (LeetCode 57)설명: 주어진 구간 리스트에 새로운 구간을 삽입합니다.핵심 개념: 이진 탐색과 병합.Non-overlapping Intervals (LeetCode 435)설명: 겹치지 않는 구간을 만들기 위해 제거해야 할 최소 구간 개수를 찾습니다.핵심 개념: 정렬과 그리디.Medium:Range Sum Query 2D - Immutable (LeetCode 304)설명: 2D 행렬에서 주어진 범위의 합을 계산합니다.핵심 개념: 구간 합 배열.Inter..

동적인 순서 통계 (Dynamic Order Statistics) - leetcode (8)

이 주제는 일반적으로 이진 탐색 트리, 세그먼트 트리, 또는 펜윅 트리를 활용하여 해결합니다.Easy:Find Kth Largest XOR Coordinate Value (LeetCode 1738)설명: 좌표값의 XOR 결과에서 k번째로 큰 값을 찾습니다.핵심 개념: 우선순위 큐와 정렬.Rank Teams by Votes (LeetCode 1366)설명: 팀의 투표 결과를 순위화합니다.핵심 개념: 해시 맵과 정렬.Sort Characters By Frequency (LeetCode 451)설명: 문자 빈도에 따라 문자열을 정렬합니다.핵심 개념: 우선순위 큐.Medium:Orderly Queue (LeetCode 899)설명: 주어진 규칙에 따라 문자열을 정렬합니다.핵심 개념: 우선순위 큐.Count of..

레드-블랙 트리 (Red-Black Tree) - leetcode (10)

레드-블랙 트리는 LeetCode에서 직접적으로 다루지 않지만, 그 개념을 기반으로 동작하는 문제들이 있습니다. 주로 BST 또는 균형 트리와 연관된 문제들입니다.Easy:Convert Sorted Array to Binary Search Tree (LeetCode 108)설명: 정렬된 배열을 높이 균형 이진 탐색 트리로 변환합니다.핵심 개념: 재귀와 분할 정복.Minimum Absolute Difference in BST (LeetCode 530)설명: BST에서 두 노드 간의 최소 차이를 찾습니다.핵심 개념: 중위 순회.Insert into a Binary Search Tree (LeetCode 701)설명: BST에 새로운 노드를 삽입합니다.핵심 개념: 재귀적 삽입.Find Mode in Binar..

k-Select (kth-order statistics) - leetcode (26)

Easy:Kth Largest Element in a Stream (LeetCode 703)설명: 데이터 스트림에서 k번째로 큰 요소를 추적합니다.핵심 개념: 최소 힙을 이용한 k번째 큰 요소 유지. Kth Missing Positive Number (LeetCode 1539)설명: 정렬된 배열에서 누락된 k번째 양의 정수를 찾습니다.핵심 개념: 이진 탐색을 통한 위치 파악.Kth Smallest Number in Multiplication Table (LeetCode 668)설명: m x n 곱셈표에서 k번째로 작은 숫자를 찾습니다.핵심 개념: 이진 탐색과 카운팅.Kth Smallest Element in a BST (LeetCode 230)설명: 이진 탐색 트리에서 k번째로 작은 요소를 찾습니다.핵심..

균형잡힌 이진 트리 (Balanced Binary Tree) - leetcode (40)

Easy:Balanced Binary Tree (LeetCode 110)설명: 주어진 이진 트리가 높이 균형 트리인지 확인합니다.핵심 개념: 재귀를 이용한 트리 깊이 계산.Maximum Depth of Binary Tree (LeetCode 104)설명: 이진 트리의 최대 깊이를 구합니다.핵심 개념: DFS를 이용한 깊이 계산.Minimum Depth of Binary Tree (LeetCode 111)설명: 이진 트리의 최소 깊이를 구합니다.핵심 개념: BFS를 이용한 최소 깊이 탐색.Symmetric Tree (LeetCode 101)설명: 이진 트리가 좌우 대칭인지 확인합니다.핵심 개념: 재귀를 통한 대칭 검사.Same Tree (LeetCode 100)설명: 두 트리가 동일한지 확인합니다.핵심 개..