\> 파이썬 알고리즘 인터뷰 문제 1번(리트코드 125번) Valid Palindromeabba는 뒤집어도 abba니까 Trueabca는 뒤집으면 acba로 다르니까 False를 반환하는 문제그런데 주어진 문자열에 특수 문자 등이 섞여 있을수 있고,우리는 알파벳, 숫자
\> 파이썬 알고리즘 인터뷰 문제 2번(리트코드 344번) Reverse String주어진 리스트를 in-place로 뒤집는 문제.Two pointers 풀이, 정직한 풀이.재밌는 점은 s=s::-1은 in-place가 아니지만s: = s::-1은 in-place가 맞
파이썬 알고리즘 인터뷰 문제 3번(리트코드 937번) Reorder Data in Log Fileshttps://leetcode.com/problems/reorder-data-in-log-files/sort() 안에 매개변수 사용하는게 익숙하지 않다.lambd
파이썬 알고리즘 인터뷰 문제 5번(리트코드 819번) Most Common Wordhttps://leetcode.com/problems/most-common-word/collections.Counter() , s붙는 것이랑 대문자 C 유의collections.
파이썬 알고리즘 인터뷰 문제 5번(리트코드 49번) Group Anagramshttps://leetcode.com/problems/group-anagrams/collections.defaultdict()
파이썬 알고리즘 인터뷰 문제 6번(리트코드 5번) Longest Palindromic Substringhttps://leetcode.com/problems/longest-palindromic-substring/테스트 케이스ccc
파이썬 알고리즘 인터뷰 문제 7번(리트코드 1번) Two Sumhttps://leetcode.com/problems/two-sum/리트코드 1번 문제로 그 풀이가 워낙 유명하다.물론 코딩을 아주 처음 접했을 때는 Brute Force로 풀고, 해답을 보고 나서
파이썬 알고리즘 인터뷰 문제 8번(리트코드 42번) Trapping Rain Waterhttps://leetcode.com/problems/trapping-rain-water/푸는데 한참 걸렸다.특히 Stack으로 푸는 것은 아주 오래 걸렸음.꼭 다시 풀어보자
파이썬 알고리즘 인터뷰 문제 9번(리트코드 15번) 3Sumhttps://leetcode.com/problems/3sum/정답인 경우를 찾았을 때는 mid, right를 동시에 옮길 수 있다는 것이 포인트mid, right 포인터도 옮기고 나서 중복 숫자 건너
파이썬 알고리즘 인터뷰 문제 10번(리트코드 561번) Array Partitionhttps://leetcode.com/problems/array-partition/
파이썬 알고리즘 인터뷰 문제 11번(리트코드 238번) Product of Array Except Selfhttps://leetcode.com/problems/product-of-array-except-self/코드를 짜기 전에 인간인 내가 어떤 식으로 이 문
파이썬 알고리즘 인터뷰 문제 12번(리트코드 121번) Best Time to Buy and Sell Stockhttps://leetcode.com/problems/best-time-to-buy-and-sell-stock/그림을 그려보면 생각에 도움이 된다.
파이썬 알고리즘 인터뷰 문제 13번(리트코드 234번) Palindrome Linked Listhttps://leetcode.com/problems/palindrome-linked-list/연결 리스트를 리스트로 바꾸어 푼 치사한 방법이다. 러너를 이용한 풀이
파이썬 알고리즘 인터뷰 문제 14번(리트코드 21번) Merge Two Sorted Listshttps://leetcode.com/problems/merge-two-sorted-lists/간단한 풀이이다.dummy를 만들고 그 뒤에 l1, l2를 순회하며 작은
파이썬 알고리즘 인터뷰 문제 15번(리트코드 206번) Reverse Linked Listhttps://leetcode.com/problems/reverse-linked-list/뒤집기는 흔한 유형이니 해결보다 우아하고 간결하게 작성하는 것에 익숙해지자.처음에
파이썬 알고리즘 인터뷰 문제 16번(리트코드 2번) Add Two Numbershttps://leetcode.com/problems/add-two-numbers/사람이 덧셈을 하는 방식을 생각해보면 어렵지 않다.그리고 그것을 생각해보면 처음 연결리스트가 역순으
파이썬 알고리즘 인터뷰 문제 17번(리트코드 24번) Swap Nodes in Pairshttps://leetcode.com/problems/swap-nodes-in-pairs/책 풀이랑 비슷하게 풀긴 했지만, 가독성이나 디테일이 차이가 있다.그래도 재귀 풀이
파이썬 알고리즘 인터뷰 문제 18번(리트코드 328번) Odd Even Linked Listhttps://leetcode.com/problems/odd-even-linked-list/항상 마지막 노드가 None 을 가르키는 지 확인해야 한다. 그렇지 않으면 루
파이썬 알고리즘 인터뷰 문제 19번(리트코드 92번) Reverse Linked List IIhttps://leetcode.com/problems/reverse-linked-list-ii/이 문제를 풀 때 가장 까다로운 것은 뒤집어지지 않는 왼쪽 또는 오른쪽
파이썬 알고리즘 인터뷰 문제 20번(리트코드 20번) Valid Parentheseshttps://leetcode.com/problems/valid-parentheses/처음부터 닫힌 괄호가 나와서 stack 비어 있는 경우를 생각하지 못하여 not stack
파이썬 알고리즘 인터뷰 문제 21번(리트코드 316번) Remove Duplicate Lettershttps://leetcode.com/problems/remove-duplicate-letters/다른 풀이2 보다 빠르다.현재 char의 개수가 남았는 지 확
파이썬 알고리즘 인터뷰 문제 22번(리트코드 739번) Daily Temperatureshttps://leetcode.com/problems/daily-temperatures/처음에 스스로 풀지 못했는데, stack에 온도가 아닌 온도의 index를 저장할 생
파이썬 알고리즘 인터뷰 문제 23번(리트코드 225번) Implement Stack using Queueshttps://leetcode.com/problems/implement-stack-using-queues/temp queue를 하나 더 만들어서 잠시 보관
파이썬 알고리즘 인터뷰 문제 24번(리트코드 232) Implement Queue using Stackshttps://leetcode.com/problems/implement-queue-using-stacks/책 풀이이다.input과 output을 분리할 수
파이썬 알고리즘 인터뷰 문제 25번(리트코드 622) Design Circular Queuehttps://leetcode.com/problems/design-circular-queue/이런 문제는 스택을 써라, 큐를 써라, 링크드 리스트를 써라 이렇게 제한을
파이썬 알고리즘 인터뷰 문제 26번(리트코드 641번) Design Circular Dequehttps://leetcode.com/problems/design-circular-deque/
파이썬 알고리즘 인터뷰 문제 27번(리트코드 23번) Merge k Sorted Listshttps://leetcode.com/problems/merge-k-sorted-lists/파이썬 연결 리스트를 다룰 때 흔히 실수하는 참조 업데이트 문제min_head
파이썬 알고리즘 인터뷰 문제 28번(리트코드 706번) Design HashMaphttps://leetcode.com/problems/design-hashmap/대충 주어진 메서드만 구현되면 된다고 생각하고 이렇게 풀었다.하지만 hash를 사용하지 않았으므로
파이썬 알고리즘 인터뷰 문제 29번(리트코드 771번) Jewels and Stoneshttps://leetcode.com/problems/jewels-and-stones/Counter대신 dict이나 defaultdict 을 이용해서 직접 세어도 된다.리스트
파이썬 알고리즘 인터뷰 문제 30번(리트코드 3번) Longest Substring Without Repeating Charactershttps://leetcode.com/problems/longest-substring-without-repeating-char
파이썬 알고리즘 인터뷰 문제 31번(리트코드 347번) Top K Frequent Elementshttps://leetcode.com/problems/top-k-frequent-elements/Counter를 이용하여 각 숫자 출현 횟수를 세어주고 most_c
파이썬 알고리즘 인터뷰 문제 32번(리트코드 200번) Number of Islandshttps://leetcode.com/problems/number-of-islands/나의 풀이1에서 이미 방문한 지점을 기록해두기 위해 seen 집합에 기록을 하였는데 그럴
파이썬 알고리즘 인터뷰 문제 33번(리트코드 17번) Letter Combinations of a Phone Numberhttps://leetcode.com/problems/letter-combinations-of-a-phone-number/여기부터 backt
파이썬 알고리즘 인터뷰 문제 34번(리트코드 46번) Permutationshttps://leetcode.com/problems/permutations/
파이썬 알고리즘 인터뷰 문제 35번(리트코드 77번) Combinationshttps://leetcode.com/problems/combinations/백트래킹 시리즈를 한번에 풀고, 잊을만 하면 다시 한번에 풀고를 반복해서 조금씩 풀이가 나아지고 있다.
파이썬 알고리즘 인터뷰 문제 36번(리트코드 39번) Combination Sumhttps://leetcode.com/problems/combination-sum/다른 풀이는 책의 풀이인데 나의 풀이2와의 차이는 path를 다루는 방법이다.나의 풀이는 생성한
파이썬 알고리즘 인터뷰 문제 37번(리트코드 78번) Subsetshttps://leetcode.com/problems/subsets/나의 풀이3에서 종료 조건을 잘못 생각해서 스스로 풀지 못했다. 복습이 필요함.
파이썬 알고리즘 인터뷰 문제 38번(리트코드 332번) Reconstruct Itineraryhttps://leetcode.com/problems/reconstruct-itinerary/
파이썬 알고리즘 인터뷰 문제 39번(리트코드 207번) Course Schedulehttps://leetcode.com/problems/course-schedule/재귀, 백트래킹은 참 알다가도 모르겠다.이제 익숙해졌다고 생각했는데 또 스스로 못 풀었다.어렵다
파이썬 알고리즘 인터뷰 문제 40번(리트코드 743번) Network Delay Timehttps://leetcode.com/problems/network-delay-time/아래는 최단 거리를 구하는 방법으로 대표적인 알고리즘이다.다익스트라 알고리즘(Dijk
파이썬 알고리즘 인터뷰 문제 41번(리트코드 787번) Cheapest Flights Within K Stopshttps://leetcode.com/problems/cheapest-flights-within-k-stops/내 풀이는 다익스트라 알고리즘을 변형한
파이썬 알고리즘 인터뷰 문제 42번(리트코드 104번) Maximum Depth of Binary Treehttps://leetcode.com/problems/maximum-depth-of-binary-tree/
파이썬 알고리즘 인터뷰 문제 43번(리트코드 543번) Diameter of Binary Treehttps://leetcode.com/problems/diameter-of-binary-tree/자식 함수는 부모 함수의 변수를 읽을 수 있다.부모 함수 diame
파이썬 알고리즘 인터뷰 문제 44번(리트코드 687번) Longest Univalue Pathhttps://leetcode.com/problems/longest-univalue-path/
파이썬 알고리즘 인터뷰 문제 45번(리트코드 226번) Invert Binary Treehttps://leetcode.com/problems/invert-binary-tree/
파이썬 알고리즘 인터뷰 문제 46번(리트코드 617번) Merge Two Binary Treeshttps://leetcode.com/problems/merge-two-binary-trees/모두 재귀 풀이이지만 다른 풀이가 더 우아하다.나는 재귀함수에서 nod
파이썬 알고리즘 인터뷰 문제 47번(리트코드 297번) Serialize and Deserialize Binary Treehttps://leetcode.com/problems/serialize-and-deserialize-binary-tree/
파이썬 알고리즘 인터뷰 문제 48번(리트코드 110번) Balanced Binary Treehttps://leetcode.com/problems/balanced-binary-tree/
파이썬 알고리즘 인터뷰 48번(리트코드 310번) Minimum Height Treeshttps://leetcode.com/problems/minimum-height-trees/다른 트리 문제들이랑 달라서 색다른 재미가 있다.
파이썬 알고리즘 인터뷰 50번(리트코드 108번) Convert Sorted Array to Binary Search Treehttps://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
파이썬 알고리즘 인터뷰 51번(리트코드 1038번) Binary Search Tree to Greater Sum Treehttps://leetcode.com/problems/binary-search-tree-to-greater-sum-tree/
파이썬 알고리즘 인터뷰 52번(리트코드 938번) Range Sum of BSThttps://leetcode.com/problems/range-sum-of-bst/현재 누적 합을 다루는 방법을 조금씩 개선하였고 3번 풀이가 가장 마음에 든다.stack 대신 q
파이썬 알고리즘 인터뷰 53번(리트코드 783) Minimum Distance Between BST Nodeshttps://leetcode.com/problems/minimum-distance-between-bst-nodes/
파이썬 알고리즘 인터뷰 54번(리트코드 105) Construct Binary Tree from Preorder and Inorder Traversalhttps://leetcode.com/problems/construct-binary-tree-from-preo
파이썬 알고리즘 인터뷰 55번(리트코드 215) Kth Largest Element in an Arrayhttps://leetcode.com/problems/kth-largest-element-in-an-array/heapq.heapify(list)는 새로운
파이썬 알고리즘 인터뷰 56번(리트코드 208) Implement Trie (Prefix Tree)https://leetcode.com/problems/implement-trie-prefix-tree/defaultdict이 편리하지만 불필요한 노드를 많이 만들
파이썬 알고리즘 인터뷰 57번(리트코드 336) Palindrome Pairshttps://leetcode.com/problems/palindrome-pairs/당연히 처음 해볼 수 있는 접근이고 실패Trie에 단어의 역순을 삽입하고, 각 노드에서 팰린드롬 여
파이썬 알고리즘 인터뷰 58번(리트코드 148) Sort Listhttps://leetcode.com/problems/sort-list/
파이썬 알고리즘 인터뷰 59번(리트코드 56) Merge Intervalshttps://leetcode.com/problems/merge-intervals/구간을 병합한 뒤에 result에 추가해야한다고 생각해서 다소 복잡하게 풀었는데,그럴 필요 없이 일단 r
파이썬 알고리즘 인터뷰 60번(리트코드 147) Insertion Sort Listhttps://leetcode.com/problems/insertion-sort-list/이번에 고른 curr를 어디에 넣을 지 탐색할 떄 항상 처음부터 탐색하지 않고, 이 전에
파이썬 알고리즘 인터뷰 61번(리트코드 179) Largest Numberhttps://leetcode.com/problems/largest-number/사실 이 방법으로 먼저 접근했다가 못 풀고 풀이1로 풀었었다.그런데 문제를 다시 읽어보니 0 <=
파이썬 알고리즘 인터뷰 62번(리트코드 242) Valid Anagramhttps://leetcode.com/problems/valid-anagram/이 풀이가 아래 풀이보다 더 빠르다.
파이썬 알고리즘 인터뷰 63번(리트코드 75) Sort Colorshttps://leetcode.com/problems/sort-colors/이게 출제 의도는 아니겠지..?느리다.
파이썬 알고리즘 인터뷰 64번(리트코드 973) K Closest Points to Originhttps://leetcode.com/problems/k-closest-points-to-origin/
파이썬 알고리즘 인터뷰 65번(리트코드 704) Binary Searchhttps://leetcode.com/problems/binary-search/
파이썬 알고리즘 인터뷰 66번(리트코드 33) Search in Rotated Sorted Arrayhttps://leetcode.com/problems/search-in-rotated-sorted-array/절반 쪼개어 둘 중 제대로 정렬된 부분을 찾는다.그
파이썬 알고리즘 인터뷰 67번(리트코드 349번) Intersection of Two Arrayshttps://leetcode.com/problems/intersection-of-two-arrays/두 집합의 교집합 연산이 &인데 호기심에 and로 바꾸어 보았
파이썬 알고리즘 인터뷰 68번(리트코드 167번) 167. Two Sum II - Input Array Is Sortedhttps://leetcode.com/problems/two-sum-ii-input-array-is-sorted/
파이썬 알고리즘 인터뷰 69번(리트코드 240번) 240. Search a 2D Matrix IIhttps://leetcode.com/problems/search-a-2d-matrix-ii/오른쪽 위 또는 왼쪽 아래 구석에서 시작해서 target 과 대소비교하
파이썬 알고리즘 인터뷰 70번(리트코드 136번) 136. Single Numberhttps://leetcode.com/problems/single-number/챕터가 비트 연산자라 이 풀이를 쉽게 떠올렸지만, 그렇지 않았다면 그냥 집합으로 푸는 풀이만 생각했
파이썬 알고리즘 인터뷰 71번(리트코드 461번) 461. Hamming Distancehttps://leetcode.com/problems/hamming-distance/bin 을 자주 써보지 않아서 생각나지 않았다.마찬가지로 문자열에서 .count 메서드가
파이썬 알고리즘 인터뷰 72번(리트코드 371번) Sum of Two Integershttps://leetcode.com/problems/sum-of-two-integers/비트 연산자2의 보수음수 표현 방법파이썬은 고정된 비트 수 없이 무한히 확장되는 임의
파이썬 알고리즘 인터뷰 73번(리트코드 393번) UTF-8 Validationhttps://leetcode.com/problems/utf-8-validation/아직 비트 연산자, 파이썬에서 2진수 표현 등이 익숙하지 않았다.처음에 비트 연산자 <&l
파이썬 알고리즘 인터뷰 74번(리트코드 191번) Number of 1 Bitshttps://leetcode.com/problems/number-of-1-bits/
파이썬 알고리즘 인터뷰 75번(리트코드 239번) Sliding Window Maximumhttps://leetcode.com/problems/sliding-window-maximum/새로 추가되는 값이 최댓값이면 heap을 초기화,그렇지 않으면 heap에 보
파이썬 알고리즘 인터뷰 76번(리트코드 76번) Minimum Window Substringhttps://leetcode.com/problems/minimum-window-substring/속도는 빠른 편이나 가독성이 좋지 않다. while문이 너무 많다.GP
파이썬 알고리즘 인터뷰 77번(리트코드 424번) Longest Repeating Character Replacementhttps://leetcode.com/problems/longest-repeating-character-replacement/핵심 아이디어인
파이썬 알고리즘 인터뷰 78번(리트코드 122번) Best Time to Buy and Sell Stock IIhttps://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/1 → 2→ 3 원으로 가격이 오
파이썬 알고리즘 인터뷰 79번(리트코드 406번) Queue Reconstruction by Heighthttps://leetcode.com/problems/queue-reconstruction-by-height/우선 주어진 배열을 키 기준 내림차순 정렬한다.
파이썬 알고리즘 인터뷰80번(리트코드 621번) Task Schedulerhttps://leetcode.com/problems/task-scheduler/출현 횟수가 가장 많은 문자를 꺼내 넣고, 넣은 지점을 기록한다.현재 고른 문자가 이전에 넣은 지점과 비교
파이썬 알고리즘 인터뷰 81번(리트코드 134번) 134. Gas Stationhttps://leetcode.com/problems/gas-station/연료가 음수여도 달릴 수 있다고 하자.출발 후 제자리로 오며 각 지점에서 gas를 더하고 cost를 뺀다.
파이썬 알고리즘 인터뷰 82번(리트코드 455번) Assign Cookieshttps://leetcode.com/problems/assign-cookies/result 변수 필요 없이 child가 곧 결과와 같음.bisect 모듈 사용 연습.
파이썬 알고리즘 인터뷰 83번(리트코트 169번) Majority Elementhttps://leetcode.com/problems/majority-element/가끔 이 책에서 추천하는 풀이는 굳이? 싶을 때가 있다.이 문제를 굳이 분할 정복 단원에서 다루며
파이썬 알고리즘 인터뷰84번(리트코드 241번) Different Ways to Add Parentheseshttps://leetcode.com/problems/different-ways-to-add-parentheses/책 풀이처음에 잘 이해하기 어려웠는데
파이썬 알고리즘 인터뷰 85번(리트코드 509번) Fibonacci Numberhttps://leetcode.com/problems/fibonacci-number/생각해보니 전부 저장해둘 필요가 없다.memo를 fib안에서 정의하면 fib이 호출될 때마다 m
파이썬 알고리즘 인터뷰 86번(리트코드 53번) Maximum Subarrayhttps://leetcode.com/problems/maximum-subarray/
파이썬 알고리즘 인터뷰 87번(리트코드 70번) Climbing Stairshttps://leetcode.com/problems/climbing-stairs/이것은 너무 유명한 피보나치다른 풀이들은 피보나치 문제 풀이 참고
파이썬 알고리즘 인터뷰 88번(리트코드 198번) House Robberhttps://leetcode.com/problems/house-robber/
Graph Theory 문제 1번https://leetcode.com/problems/number-of-provinces/간선 단위의 DFS를 작성하여, 이미 방문한 노드를 여러 번 방문하게 된다. 그러니까 노드 단위로 생각하면 되는데, 간선 단위로 생각해서
Graph Theory 문제 2번https://leetcode.com/problems/find-eventual-safe-states/아주 느리다.각 노드 조사할 때 visited을 초기화해야한다고 생각했던 이유가 있었는데, 아래 풀이 보니까 그럴 필요가 없었다
Graph Theory 문제 3번https://leetcode.com/problems/keys-and-rooms/ BFS BFS DFS, recursive DFS, stack
Graph Theory 문제 4번https://leetcode.com/problems/shortest-path-with-alternating-colors/heap을 이용해서 풀었다. 모든 엣지의 가중치가 1이므로 굳이 heap을 사용하지 않고 단순한 BFS 풀
Graph Theory 문제 5번https://leetcode.com/problems/time-needed-to-inform-all-employees/ BFS BFS 마찬가지로 BFS인데 time_to_reach가 굳이 필요 없구나. DFS, recursi
Graph Theory 문제 6번https://leetcode.com/problems/reorder-routes-to-make-all-paths-lead-to-the-city-zero/ DFS, Stack BFS 그래프를 두개 만들 필요 없이, 방향 정보를
Graph Theory 문제 7번https://leetcode.com/problems/all-paths-from-source-to-target/ DFS, Recursive