Leetcode 그라인드를 시작하는 방법
leetcode Grind 에서는 leetcode만 사용하는 것이 아니라 GeeksForGeeks, HackerRank 등과 같은 다른 웹사이트를 사용하여 다양한 질문에 더 많이 노출되는 것을 권장합니다.
그러나 모든 유형의 문제를 해결하기 전에 데이터 구조가 구현되는 방식과 이에 대한 몇 가지 이론을 이해하는 것이 좋습니다. 그런 다음 실제 코딩으로 넘어갈 수 있습니다.
Blind75, Sean Prashad, Grokking 코딩 인터뷰 등과 같은 훌륭한 프로그래밍 패턴에 대해 들어보았을 것입니다. 이 패턴은 훌륭하지만(저도 사용합니다) 해당 질문만 하면 코딩을 잘할 수 있습니다. 이 질문은 다음과 같은 모든 패턴을 다룹니다. 중요하지만 그것들을 하는 것만으로는 그와 관련된 유사한 질문을 모두 할 수 있다는 보장이 없습니다.
예를 들어, 이진 트리에 대한 질문을 풀고 있는데 이진 트리의 깊이 우선 탐색을 발견했다고 가정해 보겠습니다. 이제 레벨 순서 탐색을 수행하는 방법을 알고 있지만 깊이 우선 탐색과 관련된 모든 질문을 항상 풀 수는 없을 수도 있습니다. 당신이 그들 중 많은 문제를 해결하지 않는 한. 예를 들어, 질문이
Q.) 이진 트리의 루트와 정수 targetSum이 주어지면 경로에 있는 노드 값의 합이 targetSum과 같은 모든 루트-잎 경로를 반환합니다.
Input: root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
Output: [[5,4,11,2],[5,8,4,5]]
Explanation: There are two paths whose sum equals targetSum:
5 + 4 + 11 + 2 = 22
5 + 8 + 4 + 5 = 22
이 질문에는 DFS를 사용해야 하지만 모든 노드의 개별 값을 저장하고 합산하여 targetSum과 같은지 확인하는 방법을 알고 있다고 가정해 보겠습니다.
완전한 초보자에게는 그러한 질문을 많이 연습하지 않는 한 편리하지 않을 수 있습니다.
이제 DFS의 반복 버전에서는 방문한 노드를 기억하고 더 트래버스하기 위해 스택을 사용해야 한다는 것을 알고 있습니다. 따라서 스택은 노드를 저장하는 데 사용된다는 것을 알고 있습니다. 따라서 스택에 노드만 저장하는 대신 저장할 수도 있습니다. 모든 이전 노드 값의 노드 합계와 함께 스택 내부의 튜플. 이와 같은 것
이 작은 트릭은 스스로 생각해내기가 어렵지만 일단 알고 나면 이진 트리의 DFS에 관한 많은 질문을 해결할 수 있습니다. 즉, 이제 스택 자체를 사용하여 이진 트리에 대한 더 많은 데이터를 저장할 수 있다는 것을 알게 되었습니다.
def pathSum(root):
if not root: return None
stack = [(root,root.val,[root.val])]
ans = []
while stack:
node,val,li = stack.pop()
if not node.left and not node.right and val == targetSum:
ans.append(li)
if node.right:
stack.append((node.right,val+node.right.val,li+[node.right.val]))
if node.left:
stack.append((node.left,val+node.left.val,li+[node.left.val]))
return ans
스택에 튜플을 사용하여 저장하는 이 트릭은 더 많은 질문을 해결하는 데 도움이 됩니다.
그래서 내 요점은 하나의 패턴을 읽은 후 가능한 한 많은 관련 문제를 푸는 것입니다. 고려해야 할 또 다른 중요한 사항은 쉬운 질문을 위해 처음에 5-7분 이상 시간을 내어 질문을 하지 않는 것입니다. 쉬운 질문에 대한 답을 5분 안에 찾지 못한다면 그에 대한 개념이 부족할 수 있습니다.
한 가지 더 기억해야 할 중요한 것은 간격 반복입니다. 모든 것을 기억하지 못할 수도 있습니다. 따라서 개념이나 질문을 완전히 이해하기 위해 때때로 복습하는 것이 좋습니다.
동기 부여
''게임에서 이기는 이유는 게임에서 자유로워지기 위해서입니다.'' - Naval Ravikant
해피 그라인딩
Reference
이 문제에 관하여(Leetcode 그라인드를 시작하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/riyu/how-to-start-leetcode-grind-2f00텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)