|
| 1 | +/** |
| 2 | + * Blind Top 75 카테고리 매핑 |
| 3 | + * |
| 4 | + * "문제 풀이 현황" 테이블에는 LeetCode 홈페이지 기준 20+개 카테고리 대신 |
| 5 | + * Blind Top 75 큐레이션의 10개 카테고리만 노출한다. |
| 6 | + * |
| 7 | + * 출처: https://www.teamblind.com/post/new-year-gift-curated-list-of-top-75-leetcode-questions-to-save-your-time-oam1oreu |
| 8 | + * 관련 이슈: https://github.com/DaleStudy/github/issues/34 |
| 9 | + */ |
| 10 | + |
| 11 | +export const BLIND_CATEGORY_ORDER = [ |
| 12 | + "Array", |
| 13 | + "Binary", |
| 14 | + "Dynamic Programming", |
| 15 | + "Graph", |
| 16 | + "Interval", |
| 17 | + "Linked List", |
| 18 | + "Matrix", |
| 19 | + "String", |
| 20 | + "Tree", |
| 21 | + "Heap", |
| 22 | +]; |
| 23 | + |
| 24 | +/** |
| 25 | + * 문제 슬러그 → Blind 카테고리 배열. |
| 26 | + * |
| 27 | + * 한 문제가 여러 Blind 카테고리에 속할 수 있다 (예: merge-k-sorted-lists → Linked List + Heap). |
| 28 | + * `problem-categories.json`에 있지만 이 맵에 없는 문제는 Blind 75 밖이므로 집계에서 제외된다. |
| 29 | + */ |
| 30 | +export const BLIND_PROBLEM_MAP = { |
| 31 | + // Array (10) |
| 32 | + "two-sum": ["Array"], |
| 33 | + "best-time-to-buy-and-sell-stock": ["Array"], |
| 34 | + "contains-duplicate": ["Array"], |
| 35 | + "product-of-array-except-self": ["Array"], |
| 36 | + "maximum-subarray": ["Array"], |
| 37 | + "maximum-product-subarray": ["Array"], |
| 38 | + "find-minimum-in-rotated-sorted-array": ["Array"], |
| 39 | + "search-in-rotated-sorted-array": ["Array"], |
| 40 | + "3sum": ["Array"], |
| 41 | + "container-with-most-water": ["Array"], |
| 42 | + |
| 43 | + // Binary (5) |
| 44 | + "sum-of-two-integers": ["Binary"], |
| 45 | + "number-of-1-bits": ["Binary"], |
| 46 | + "counting-bits": ["Binary"], |
| 47 | + "missing-number": ["Binary"], |
| 48 | + "reverse-bits": ["Binary"], |
| 49 | + |
| 50 | + // Dynamic Programming (11) |
| 51 | + "climbing-stairs": ["Dynamic Programming"], |
| 52 | + "coin-change": ["Dynamic Programming"], |
| 53 | + "longest-increasing-subsequence": ["Dynamic Programming"], |
| 54 | + "longest-common-subsequence": ["Dynamic Programming"], |
| 55 | + "word-break": ["Dynamic Programming"], |
| 56 | + "combination-sum": ["Dynamic Programming"], |
| 57 | + "house-robber": ["Dynamic Programming"], |
| 58 | + "house-robber-ii": ["Dynamic Programming"], |
| 59 | + "decode-ways": ["Dynamic Programming"], |
| 60 | + "unique-paths": ["Dynamic Programming"], |
| 61 | + "jump-game": ["Dynamic Programming"], |
| 62 | + |
| 63 | + // Graph (8) |
| 64 | + "clone-graph": ["Graph"], |
| 65 | + "course-schedule": ["Graph"], |
| 66 | + "pacific-atlantic-water-flow": ["Graph"], |
| 67 | + "number-of-islands": ["Graph"], |
| 68 | + "longest-consecutive-sequence": ["Graph"], |
| 69 | + "alien-dictionary": ["Graph"], |
| 70 | + "graph-valid-tree": ["Graph"], |
| 71 | + "number-of-connected-components-in-an-undirected-graph": ["Graph"], |
| 72 | + |
| 73 | + // Interval (5) |
| 74 | + "insert-interval": ["Interval"], |
| 75 | + "merge-intervals": ["Interval"], |
| 76 | + "non-overlapping-intervals": ["Interval"], |
| 77 | + "meeting-rooms": ["Interval"], |
| 78 | + "meeting-rooms-ii": ["Interval"], |
| 79 | + |
| 80 | + // Linked List (6; merge-k-sorted-lists 는 Heap 과 중복) |
| 81 | + "reverse-linked-list": ["Linked List"], |
| 82 | + "linked-list-cycle": ["Linked List"], |
| 83 | + "merge-two-sorted-lists": ["Linked List"], |
| 84 | + "merge-k-sorted-lists": ["Linked List", "Heap"], |
| 85 | + "remove-nth-node-from-end-of-list": ["Linked List"], |
| 86 | + "reorder-list": ["Linked List"], |
| 87 | + |
| 88 | + // Matrix (4) |
| 89 | + "set-matrix-zeroes": ["Matrix"], |
| 90 | + "spiral-matrix": ["Matrix"], |
| 91 | + "rotate-image": ["Matrix"], |
| 92 | + "word-search": ["Matrix"], |
| 93 | + |
| 94 | + // String (10) |
| 95 | + "longest-substring-without-repeating-characters": ["String"], |
| 96 | + "longest-repeating-character-replacement": ["String"], |
| 97 | + "minimum-window-substring": ["String"], |
| 98 | + "valid-anagram": ["String"], |
| 99 | + "group-anagrams": ["String"], |
| 100 | + "valid-parentheses": ["String"], |
| 101 | + "valid-palindrome": ["String"], |
| 102 | + "longest-palindromic-substring": ["String"], |
| 103 | + "palindromic-substrings": ["String"], |
| 104 | + "encode-and-decode-strings": ["String"], |
| 105 | + |
| 106 | + // Tree (14) |
| 107 | + "maximum-depth-of-binary-tree": ["Tree"], |
| 108 | + "same-tree": ["Tree"], |
| 109 | + "invert-binary-tree": ["Tree"], |
| 110 | + "binary-tree-maximum-path-sum": ["Tree"], |
| 111 | + "binary-tree-level-order-traversal": ["Tree"], |
| 112 | + "serialize-and-deserialize-binary-tree": ["Tree"], |
| 113 | + "subtree-of-another-tree": ["Tree"], |
| 114 | + "construct-binary-tree-from-preorder-and-inorder-traversal": ["Tree"], |
| 115 | + "validate-binary-search-tree": ["Tree"], |
| 116 | + "kth-smallest-element-in-a-bst": ["Tree"], |
| 117 | + "lowest-common-ancestor-of-a-binary-search-tree": ["Tree"], |
| 118 | + "implement-trie-prefix-tree": ["Tree"], |
| 119 | + "design-add-and-search-words-data-structure": ["Tree"], |
| 120 | + "word-search-ii": ["Tree"], |
| 121 | + |
| 122 | + // Heap (3; merge-k-sorted-lists 는 Linked List 와 중복) |
| 123 | + "top-k-frequent-elements": ["Heap"], |
| 124 | + "find-median-from-data-stream": ["Heap"], |
| 125 | +}; |
| 126 | + |
| 127 | +/** |
| 128 | + * 문제 슬러그에 해당하는 Blind 카테고리 배열을 반환한다. |
| 129 | + * Blind 75 밖의 문제는 빈 배열을 반환한다. |
| 130 | + * |
| 131 | + * @param {string} problemName |
| 132 | + * @returns {string[]} |
| 133 | + */ |
| 134 | +export function getBlindCategories(problemName) { |
| 135 | + return BLIND_PROBLEM_MAP[problemName] ?? []; |
| 136 | +} |
0 commit comments