[작성중] Leetcode - 분야별 추천문제

숲사람·2022년 7월 24일
3

멘타트 훈련

목록 보기
101/237
post-thumbnail

Leetcode에서 풀어본 것중에 좋은 문제라고 생각한 것들을 분야별로 추려보았다. 내가 생각하는 좋은 문제의 기준은 기본을 다루는지 여부다. 자료구조/알고리즘의 기본 개념과 동작을 훈련을 통해 익히고 개선할수 있는 문제가 좋은 문제라고 생각한다. 따라서 문제가 조잡하거나 난해하지않고, 풀이도 핵심 로직으로만 구현되는 심플할 수록 좋다. 다양한 방법으로 해결할수 있는 문제면 더 좋다. 코딩테스트가 지능테스트가 되어서는 안된다고 생각잔다. 순간의 번뜩이는 아이디어를 요구하는 문제나 고도의 수학적 증명기술을 필요로 하는 문제는 추천하기 어렵다.

참고 - 문제 우측에 난이도 표기를 했다([E] Easy / [M] Midium). 이 문서는 문제를 발견할 때마다 계속업데이트 할 예정이다.

참고할만한 글: 인지과학에 기반한 프로그래머의 기본기 훈련

목록

자료구조

  • Array/String
  • Linked List
  • Hashtable
  • Stack
  • Heap(Priority Queue)
  • Tree
  • Binary Search Tree
  • Graph

알고리즘/테크닉

  • Recursion
  • DFS/BFS
  • Binary Search
  • Prefix Sum
  • Two Pointer
  • Sliding Window
  • Greedy
  • Dynamic Programming
  • Backtracking
  • Permutation/Combination
  • Bit Manipulation
  • Sorting

Array

String


205. Isomorphic Strings [E]

주어진 두 문자열이 isomorphic 하면 true 아니면 false 리턴. (문자열을 구성하는 charactor는 모든 ascii문자) -> 풀이

Input: s = "egg", t = "add"
Output: true
Input: s = "foo", t = "bar"
Output: false
Input: s = "paper", t = "title"
Output: true
Input: s = "13", t = "42"
Output: true

Prefix Sum (구간합)


724. Find Pivot Index [E]

특정 index를 기준으로 이전/이후 배열값의 합이 동일한 index를 리턴하라. -> 풀이

Input: nums = [1,7,3,6,5,6]
Output: 3
Explanation: The pivot index is 3.
Left sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11
Right sum = nums[4] + nums[5] = 5 + 6 = 11

Two Pointer


392. Is Subsequence [E]

첫번째 문자열이 두번째 문자열의 subsequence인지 판단하기 -> 풀이

Input: s = "abc", t = "ahbgdc"
Output: true

34. Find First and Last Position of Element in Sorted Array [M]

중복된 값이 있는 정렬된 배열이 있을때, target값이 존재하는 범위를 리턴하라. 없다면 [-1,-1]을 리턴.
단, 시간복잡도는 O(log N)을 초과할 수 없다. -> 풀이

Input: nums = [5,7,7,8,8,10], target = 8
Output: [3,4]

Sliding Window

  1. Find All Anagrams in a String

Linked List

206. Reverse Linked List [E]

링크드 리스트를 reverse하라. -> 풀이

21. Merge Two Sorted Lists [E]

주어진 두 정렬된 링크드 리스트를 합치기(정렬된 상태 유지) -> 풀이

141. Linked List Cycle [E]

링크드 리스트의 head만 주어진다. 만약 리스트에 사이클이 존재한다면 true를 리턴하고 사이클이 없다면 false를 리턴하라. -> 풀이

142. Linked List Cycle II [M]

링크드 리스트의 head만 주어진다. 만약 리스트에 사이클이 존재한다면 사이클이 시작되는 노드를 리턴하라. 사이클이 없다면 NULL리턴. -> 풀이

Tree

  1. Invert Binary Tree

  2. Find Leaves of Binary Tree

  3. Validate Binary Search Tree[M]

Binary Search

704. Binary Search

278. First Bad Version

profile
기록 & 정리 아카이브 용도 (보다 완성된 글은 http://soopsaram.com/documentudy)

0개의 댓글