Coding Test/알고리즘 이론

안정적인 짝짓기 문제 (Stable Matching) 20+20

hyunkookim 2025. 1. 6. 14:23

 

  • Stable Matching Problem
    설명: 두 집단 간에 안정적인 매칭을 찾는 문제입니다.
    핵심 개념: 게일-섀플리 알고리즘, 그래프 이론.
  • Gale-Shapley Algorithm
    설명: 모든 참여자가 만족하는 안정적인 결혼 매칭을 계산합니다.
    핵심 개념: 매칭 알고리즘.

 

LeetCode Easy

  1. Two Sum (LeetCode 1)
    설명: 주어진 배열에서 두 수의 합이 목표값이 되는 인덱스를 찾습니다.
    핵심 개념: 해시맵, 완전 탐색.
  2. Valid Parentheses (LeetCode 20)
    설명: 괄호가 유효한 조합인지 확인합니다.
    핵심 개념: 스택.
  3. Merge Two Sorted Lists (LeetCode 21)
    설명: 두 개의 정렬된 연결 리스트를 병합합니다.
    핵심 개념: 연결 리스트, 재귀.
  4. Best Time to Buy and Sell Stock (LeetCode 121)
    설명: 주식의 최대 이익을 계산합니다.
    핵심 개념: DP, 슬라이딩 윈도우.
  5. Maximum Subarray (LeetCode 53)
    설명: 배열에서 연속된 부분 배열의 최대 합을 구합니다.
    핵심 개념: 카데인 알고리즘, DP.
  6. Invert Binary Tree (LeetCode 226)
    설명: 이진 트리를 반전합니다.
    핵심 개념: BFS, DFS.
  7. Majority Element (LeetCode 169)
    설명: 배열에서 과반수 이상 등장한 요소를 찾습니다.
    핵심 개념: 해시맵, 분할 정복.
  8. Contains Duplicate (LeetCode 217)
    설명: 배열에 중복된 값이 있는지 확인합니다.
    핵심 개념: 해시셋.
  9. Binary Tree Inorder Traversal (LeetCode 94)
    설명: 이진 트리의 중위 순회를 구현합니다.
    핵심 개념: DFS, 재귀.
  10. Climbing Stairs (LeetCode 70)
    설명: 계단을 오를 수 있는 방법의 수를 계산합니다.
    핵심 개념: DP, 피보나치 수열.
  11. Lowest Common Ancestor of a Binary Search Tree (LeetCode 235)
    설명: 이진 검색 트리에서 두 노드의 가장 가까운 공통 조상을 찾습니다.
    핵심 개념: 이진 검색 트리, DFS.
  12. Symmetric Tree (LeetCode 101)
    설명: 이진 트리가 대칭인지 확인합니다.
    핵심 개념: BFS, 재귀.
  13. Path Sum (LeetCode 112)
    설명: 루트에서 리프까지의 경로 중 특정 합을 가지는 경로가 있는지 확인합니다.
    핵심 개념: DFS, 재귀.
  14. Intersection of Two Arrays II (LeetCode 350)
    설명: 두 배열의 교집합을 찾습니다(중복 포함).
    핵심 개념: 해시맵, 투 포인터.
  15. Find All Numbers Disappeared in an Array (LeetCode 448)
    설명: 1부터 n까지의 숫자 중 배열에서 누락된 숫자를 찾습니다.
    핵심 개념: 인덱스 조작.
  16. First Bad Version (LeetCode 278)
    설명: 첫 번째로 잘못된 버전을 찾습니다.
    핵심 개념: 이진 탐색.
  17. Middle of the Linked List (LeetCode 876)
    설명: 연결 리스트의 중간 노드를 반환합니다.
    핵심 개념: 투 포인터.
  18. Merge Sorted Array (LeetCode 88)
    설명: 두 개의 정렬된 배열을 병합합니다.
    핵심 개념: 투 포인터.
  19. Binary Search (LeetCode 704)
    설명: 주어진 배열에서 타겟 요소를 찾습니다.
    핵심 개념: 이진 탐색.
  20. Roman to Integer (LeetCode 13)
    설명: 로마 숫자를 정수로 변환합니다.
    핵심 개념: 문자열 처리, 해시맵.

LeetCode Medium

  1. 3Sum (LeetCode 15)
    설명: 배열에서 세 수의 합이 0이 되는 모든 조합을 찾습니다.
    핵심 개념: 투 포인터, 정렬.
  2. Add Two Numbers (LeetCode 2)
    설명: 두 개의 연결 리스트를 더합니다.
    핵심 개념: 연결 리스트, 수학.
  3. Group Anagrams (LeetCode 49)
    설명: 애너그램 단어들을 그룹으로 묶습니다.
    핵심 개념: 해시맵, 문자열.
  4. Longest Palindromic Substring (LeetCode 5)
    설명: 주어진 문자열에서 가장 긴 팰린드롬 부분 문자열을 찾습니다.
    핵심 개념: DP, 중심 확장법.
  5. Kth Largest Element in an Array (LeetCode 215)
    설명: 배열에서 k번째로 큰 요소를 찾습니다.
    핵심 개념: 힙, 퀵 셀렉트.
  6. Word Search (LeetCode 79)
    설명: 격자에서 단어가 존재하는지 확인합니다.
    핵심 개념: 백트래킹, DFS.
  7. Coin Change (LeetCode 322)
    설명: 최소 동전의 개수로 주어진 금액을 구성합니다.
    핵심 개념: DP.
  8. Course Schedule (LeetCode 207)
    설명: 주어진 과목들이 완료 가능한지 확인합니다.
    핵심 개념: 위상 정렬, DFS, 그래프.
  9. Number of Islands (LeetCode 200)
    설명: 2D 격자에서 섬의 개수를 계산합니다.
    핵심 개념: BFS, DFS.
  10. Longest Increasing Subsequence (LeetCode 300)
    설명: 배열에서 가장 긴 증가 부분 수열의 길이를 찾습니다.
    핵심 개념: DP, 이진 탐색.
  11. Rotting Oranges (LeetCode 994)
    설명: 썩은 오렌지가 모두 영향을 미치는 데 걸리는 시간을 계산합니다.
    핵심 개념: BFS, 그래프.
  12. Letter Combinations of a Phone Number (LeetCode 17)
    설명: 전화번호 키패드의 숫자로 가능한 문자 조합을 찾습니다.
    핵심 개념: 백트래킹.
  13. Binary Tree Zigzag Level Order Traversal (LeetCode 103)
    설명: 이진 트리를 지그재그 방식으로 레벨 순회를 수행합니다.
    핵심 개념: BFS.
  14. Combination Sum (LeetCode 39)
    설명: 주어진 숫자로 가능한 모든 조합의 합을 계산합니다.
    핵심 개념: 백트래킹.
  15. Permutations (LeetCode 46)
    설명: 배열의 모든 순열을 계산합니다.
    핵심 개념: DFS, 백트래킹.
  16. Subsets (LeetCode 78)
    설명: 배열의 모든 부분 집합을 계산합니다.
    핵심 개념: 백트래킹.
  17. Search in Rotated Sorted Array (LeetCode 33)
    설명: 회전된 정렬 배열에서 타겟 요소를 찾습니다.
    핵심 개념: 이진 탐색.
  18. Unique Paths (LeetCode 62)
    설명: 격자의 시작점에서 끝점까지 이동하는 고유한 경로의 수를 계산합니다.
    핵심 개념: DP, 조합론.
  19. Find Minimum in Rotated Sorted Array (LeetCode 153)
    설명: 회전된 정렬 배열에서 최소값을 찾습니다.
    핵심 개념: 이진 탐색.
  20. Linked List Cycle (LeetCode 141)
    설명: 연결 리스트에 사이클이 있는지 확인합니다.
    핵심 개념: 투 포인터.