✅ Matroid 관련 LeetCode 문제 번호 정리
🔹 배열 / 해시맵
🔹 문자열 처리
🔹 재귀 / 동적계획법 (DP)
🔹 트리 / BST
🔹 슬라이딩 윈도우
🔹 기타 (커스텀 문제 유사)
문제설명LeetCode 번호
Build BST from array | 직접 구현해야 함 | 108 |
Capitalize every 3rd word | 커스텀 구현 문제 (LeetCode에는 없음) | ❌ 없음 (직접 구현) |
📌 BST 필수 문제들 (LeetCode)
유형문제 제목LeetCode 번호난이도
BST 생성 | Convert Sorted Array to Binary Search Tree | #108 | Easy |
BST 생성 | Convert Sorted List to Binary Search Tree | #109 | Medium |
BST 탐색 | Search in a Binary Search Tree | #700 | Easy |
BST 노드 삽입 | Insert into a Binary Search Tree | #701 | Medium |
BST 노드 삭제 | Delete Node in a BST | #450 | Medium |
BST 검증 | Validate Binary Search Tree | #98 | Medium |
BST 최소 공통 조상 | Lowest Common Ancestor of a BST | #235 | Easy |
BST 반복자 구현 | Binary Search Tree Iterator | #173 | Medium |
이진 트리 직렬화 | Serialize and Deserialize BST | #449 | Medium |
BST에서 두 수의 합 찾기 | Two Sum IV - Input is a BST | #653 | Easy |
BST에서 k번째 작은 원소 찾기 | Kth Smallest Element in a BST | #230 | Medium |
정렬되지 않은 배열에서 BST 구성 | Construct Binary Search Tree from Preorder Traversal | #1008 | Medium |
💡 위 질문의 대표적인 문제와 모범 코드 예시 (#108):
Convert Sorted Array to BST 문제는 정렬된 배열을 입력받아 균형 잡힌 BST를 구성하는 대표적 문제입니다.
예시 코드 (Python):
# LeetCode #108 모범 답안
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def sortedArrayToBST(self, nums):
if not nums:
return None
mid = len(nums) // 2
root = TreeNode(nums[mid])
root.left = self.sortedArrayToBST(nums[:mid])
root.right = self.sortedArrayToBST(nums[mid+1:])
return root
🎯 추천 풀이 순서:
- (#108) Sorted Array to BST → 생성하기 쉬운 기본 문제
- (#98) Validate BST → BST 개념 이해 필수
- (#701, #450) Insert, Delete in BST → BST 구조 변형 연습
- (#235, #173, #230) Lowest Common Ancestor, Iterator, Kth Smallest → BST 활용 고급 문제
이 리스트를 따라 연습하면 BST 관련 인터뷰 대비는 충분히 가능합니다!
🚩 단계별 추천 학습 순서
✅ Step 1. BST의 기본 개념 이해하기
- (#108) Convert Sorted Array to Binary Search Tree (Easy)
배열로 BST 만드는 기본 문제로 BST 생성의 기초 원리를 학습합니다. - (#700) Search in a Binary Search Tree (Easy)
BST에서 원하는 값을 찾는 기본적인 탐색 원리.
✅ Step 2. BST의 구조 변형 연습
- (#701) Insert into a Binary Search Tree (Medium)
BST에 값을 삽입하면서 BST 구조를 유지하는 방법을 연습. - (#450) Delete Node in a BST (Medium)
BST에서 노드를 삭제하고도 구조를 유지하는 조금 더 복잡한 연습.
✅ Step 3. BST가 유효한지 확인하는 문제
- (#98) Validate Binary Search Tree (Medium)
주어진 트리가 올바른 BST인지 검증하는 문제로 BST의 정의를 명확히 이해.
✅ Step 4. 응용 및 실제 인터뷰에서 자주 등장하는 문제
- (#235) Lowest Common Ancestor of a BST (Easy)
두 노드의 가장 가까운 공통 부모를 찾는 문제로, BST의 속성을 활용하는 연습. - (#653) Two Sum IV - Input is a BST (Easy)
BST 안에서 특정 합을 가진 두 노드를 찾는 문제로, BST 탐색을 다양하게 응용.
✅ Step 5. BST 반복자와 트리 직렬화 (실무형 문제)
- (#173) Binary Search Tree Iterator (Medium)
BST를 반복자(iterator) 형식으로 순회하는 구현. 인터뷰에서 흔히 나오는 문제 유형. - (#449) Serialize and Deserialize BST (Medium)
BST를 직렬화 및 역직렬화하여 저장 및 복원하는 연습.
✅ Step 6. 고급 문제로 확장
- (#230) Kth Smallest Element in a BST (Medium)
BST에서 특정 순서의 원소를 빠르게 찾는 효율적인 방법. - (#1008) Construct Binary Search Tree from Preorder Traversal (Medium)
정렬되지 않은 데이터를 입력받아 BST를 구성하는 고급 문제로 실력 확인. - (#109) Convert Sorted List to Binary Search Tree (Medium)
링크드 리스트에서 BST를 구성하는 문제로, 배열과 달리 노드 접근의 특성을 이해할 수 있음.
Category | Problem | LeetCode # |
배열 / 투포인터 | Two Sum | 1 |
배열 / 투포인터 | 3Sum | 15 |
배열 / 투포인터 | Contains Duplicate | 217 |
배열 / 투포인터 | Move Zeroes | 283 |
배열 / 투포인터 | Remove Duplicates from Sorted Array | 26 |
배열 / 투포인터 | Container With Most Water | 11 |
문자열 처리 | Valid Palindrome | 125 |
문자열 처리 | Encode and Decode Strings | 271 |
문자열 처리 | Longest Substring Without Repeating Characters | 3 |
문자열 처리 | Implement strStr() | 28 |
문자열 처리 | Group Anagrams | 49 |
문자열 처리 | Make every three word uppercase | Custom Problem |
슬라이딩 윈도우 | Sliding Window Maximum | 239 |
슬라이딩 윈도우 | Minimum Size Subarray Sum | 209 |
슬라이딩 윈도우 | Longest Repeating Character Replacement | 424 |
슬라이딩 윈도우 | Permutation in String | 567 |
슬라이딩 윈도우 | Longest Substring with At Most K Distinct Characters | 340 |
재귀 + 메모이제이션 | Climbing Stairs | 70 |
재귀 + 메모이제이션 | Fibonacci Number | 509 |
재귀 + 메모이제이션 | Target Sum | 494 |
재귀 + 메모이제이션 | House Robber | 198 |
재귀 + 메모이제이션 | Word Break | 139 |
재귀 + 메모이제이션 | Unique Paths | 62 |
트리 | Convert Sorted Array to BST | 108 |
트리 | Maximum Depth of Binary Tree | 104 |
트리 | Lowest Common Ancestor of Binary Tree | 236 |
트리 | Diameter of Binary Tree | 543 |
트리 | Path Sum | 112 |
BST (이진 탐색 트리) | Validate Binary Search Tree | 98 |
BST (이진 탐색 트리) | Insert into a Binary Search Tree | 701 |
BST (이진 탐색 트리) | Delete Node in a BST | 450 |
BST (이진 탐색 트리) | Trim a Binary Search Tree | 669 |
BST (이진 탐색 트리) | Kth Smallest Element in a BST | 230 |
해시맵 활용 | Group Anagrams | 49 |
해시맵 활용 | Top K Frequent Elements | 347 |
해시맵 활용 | Two Sum | 1 |
해시맵 활용 | Isomorphic Strings | 205 |
해시맵 활용 | Word Pattern | 290 |
정렬 / 그리디 | Merge Intervals | 56 |
정렬 / 그리디 | Insert Interval | 57 |
정렬 / 그리디 | Meeting Rooms | 252 |
정렬 / 그리디 | Meeting Rooms II | 253 |
정렬 / 그리디 | Non-overlapping Intervals | 435 |
스택 / 큐 | Valid Parentheses | 20 |
스택 / 큐 | Min Stack | 155 |
스택 / 큐 | Evaluate Reverse Polish Notation | 150 |
스택 / 큐 | Basic Calculator | 224 |
스택 / 큐 | Implement Queue using Stacks | 232 |
'job 인터뷰 > 코테(Matroid) 준비' 카테고리의 다른 글
557. Reverse Words in a String III (0) | 2025.04.17 |
---|---|
239. Sliding Window Maximum ★ (0) | 2025.04.16 |
Matroid 유형 (0) | 2025.04.15 |
Matroid: Write a program to make every third word uppercase (0) | 2025.04.15 |
[글래스토어 후기] Matroid (0) | 2025.04.13 |