job 인터뷰/코테(Matroid) 준비

Matroid 관련 LeetCode 문제 번호 정리

hyunkookim 2025. 4. 15. 10:25

✅ Matroid 관련 LeetCode 문제 번호 정리

🔹 배열 / 해시맵

문제설명LeetCode 번호
Two Sum 합이 target인 두 수 찾기 1
3Sum 세 수의 합이 0이 되는 조합 15
Contains Duplicate 중복 원소 존재 여부 217
Top K Frequent Elements 가장 자주 등장한 K개 요소 347

🔹 문자열 처리

문제설명LeetCode 번호
Reverse Words in a String 단어 순서 뒤집기 151
Reverse Words in a String III 각 단어 뒤집기 557
Encode and Decode Strings 문자열 인코딩/디코딩 271 (Premium)

🔹 재귀 / 동적계획법 (DP)

문제설명LeetCode 번호
Climbing Stairs DP의 대표 문제 70
Target Sum DFS + memoization 494

🔹 트리 / BST

문제설명LeetCode 번호
Convert Sorted Array to BST 정렬된 배열로 이진탐색트리 만들기 108
Lowest Common Ancestor 트리에서 LCA 찾기 235

🔹 슬라이딩 윈도우

문제설명LeetCode 번호
Sliding Window Maximum 윈도우 내 최대값 구하기 239
Minimum Size Subarray Sum 부분합이 특정 조건을 만족하는 최소 길이 209

🔹 기타 (커스텀 문제 유사)

문제설명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

🎯 추천 풀이 순서:

  1. (#108) Sorted Array to BST → 생성하기 쉬운 기본 문제
  2. (#98) Validate BST → BST 개념 이해 필수
  3. (#701, #450) Insert, Delete in BST → BST 구조 변형 연습
  4. (#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