Algorithms (44) 썸네일형 리스트형 [LeetCode] 128. Longest Consecutive Sequence 풀이 (Java) ✔️ 오늘의 리트코드 공부 기록 – Longest Consecutive Sequence 문제 요약 (Longest Palindromic Substring)정수 배열이 주어질 때, 연속된 숫자로 이루어진 수열의 가장 긴 길이를 구하라. 단, 시간복잡도는 O(n). 문제링크: https://leetcode.com/problems/longest-consecutive-sequence 🤔 처음 떠올린 아이디어처음에는 이렇게 생각했다.어차피 연속된 숫자들은 하나의 덩어리 아닌가?숫자를 HashSet에 모두 넣고아무 숫자 하나를 꺼낸 뒤그 숫자를 기준으로 왼쪽(cur-1), 오른쪽(cur+1)으로 계속 확장.확장한 숫자들을 Set에서 제거길이를 계산하고 최대 길이 갱신.다음 덩어리로 이동.그러면 하나의 “연속 덩.. [LeetCode] 124. Binary Tree Maximum Path Sum 풀이 (Java) ✔️ 오늘의 리트코드 공부 기록 – Binary Tree Maximum Path Sum문제 요약이진 트리가 주어질 때, 어떤 경로(Path)의 합이 최대가 되는 값을 구하라.경로는 부모-자식으로 연결시작과 끝은 아무 노드 가능반드시 루트를 지날 필요는 없음문제 링크: https://leetcode.com/problems/binary-tree-maximum-path-sum 💡 사고의 출발점: 경로는 어떻게 생겼을까?문제를 다시 읽어보자. “어떤 경로든 상관없다.”👉 트리에서 경로는 어떤 모양일까?트리는 사이클이 없다.그래서 모든 경로는 반드시 이런 형태다.왼쪽 어딘가 ↑ (정점) ↓오른쪽 어딘가즉, 모든 경로는 반드시 하나의 “정점(peak)”을 가진다.💡 첫 번째 핵심: 현재 노드를 .. [LeetCode] 125. Valid Palindrome 풀이 (Java) ✔️ 오늘의 리트코드 공부 기록 – Valid Palindrome 문제 요약 (Valid Palindrome)문자열이 주어질 때,알파벳과 숫자만 고려하여 (대소문자는 무시) 문자열이 회문(Palindrome)인지 판별하라.문제링크: https://leetcode.com/problems/valid-palindrome/ 🤔 처음 떠올린 아이디어처음엔 이렇게 생각했다.공백이랑 특수문자를 다 제거해서새 배열을 하나 만들고, 뒤집어서 비교하면 되지 않을까? 즉,문자열 정제새 문자열 생성reverse 해서 비교이 방식은 직관적이지만 어딘가 찝찝했다.“굳이 새 배열을 꼭 만들어야 하나?” 💡 회문은 결국👉 앞과 뒤가 같은지 비교하는 문제다. 그렇다면굳이 정제된 문자열을 새로 만들지 않아도양쪽에서 동시에 검사하면.. [LeetCode] 105. Construct Binary Tree from Preorder and Inorder Traversal 풀이 ✔️ 오늘의 리트코드 공부 기록 – Construct Binary Tree문제 요약 (Construct Binary Tree from Preorder and Inorder Traversal)Preorder 순회 배열과 Inorder 순회 배열이 주어진다. 이 두 배열을 이용해 원래의 이진 트리를 복원하라.단, 모든 노드는 중복되지 않는다.문제링크:https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal🤔 처음 떠올린 아이디어처음에는 이런 생각이 들었다.트리를 어떻게 배열 두 개로 다시 만들지?배열을 잘라야 하나?왼쪽, 오른쪽을 어떻게 구분하지?막막했지만, 순회 방식의 정의를 다시 떠올려봤다.💡 첫 번째.. [LeetCode] 102. Binary Tree Level Order Traversal 풀이 (Java) ✔️ 오늘의 리트코드 공부 기록 – Binary Tree Level Order Traversal 문제 요약 (Binary Tree Level Order Traversal)이진 트리가 주어졌을 때,노드를 레벨 단위로 순서대로 탐색하여 반환하는 문제문제링크: https://leetcode.com/problems/binary-tree-level-order-traversal/ Input: 3 / \ 9 20 / \ 15 7Output:[ [3], [9,20], [15,7]]🤔 처음 떠올린 아이디어처음에는 이렇게 생각했다.“DFS로 한 번 순회하면서각 노드의 레벨(depth)을 저장하면 되지 않을까?”그래서 다음처럼 접근하려 했다.모든 노드를 순회하면서(노드, depth)를 기.. [LeetCode] 98. Validate Binary Search Tree 풀이 (Java) ✔️ 오늘의 리트코드 공부 기록 – Validate Binary Search Tree 문제 요약 (Validate Binary Search Tree)이진 트리가 주어졌을 때,해당 트리가 Binary Search Tree(BST)ㅡ 인지 판별하는 문제 문제링크: https://leetcode.com/problems/validate-binary-search-treeBST의 정의는 다음과 같다. 모든 노드에 대해 왼쪽 서브트리의 모든 값 오른쪽 서브트리의 모든 값 > 현재 노드 값 🤔 처음 떠올린 아이디어처음에는 이렇게 생각했다. “왼쪽 자식은 부모보다 작고,오른쪽 자식은 부모보다 크면 되지 않을까?” 그래서 자연스럽게 부모와 자식만 비교하는 재귀 코드를 작성했다.if (roo.. [LeetCode] 91. Decode Ways 풀이 (Java) ✔️ 오늘의 리트코드 공부 기록 – Decode Ways 문제 요약 (Decode Ways)숫자로만 구성된 문자열 s가 주어지고, 'A'=1, 'B'=2, ..., 'Z'=26으로 매핑된다.문자열을 디코딩할 수 있는 모든 방법의 수를 구하라. 문제링크: https://leetcode.com/problems/decode-ways 🤔 처음 떠올린 생각문제를 보자마자 핵심 키워드는 “방법의 수”였다.즉, 모든 경우를 고려해야 하는 문제라는 점이 바로 보였다. 하지만문자 하나씩 모든 경우를 완전 탐색으로 나열한다면같은 부분 문자열을 반복해서 계산하게 되고결국 시간 초과가 날 것이라고 판단했다.그래서 자연스럽게“이미 계산한 경우의 수를 저장해두자” 라는 생각으로 이어졌고, DP + 메모이제이션이 가장 먼저 떠올.. [LeetCode] 79. Word Search (Java) - DFS, 백트래킹 ✔️ 오늘의 리트코드 공부 기록 – Word Search (백트래킹 사고의 시작) 문제 요약 (Word Search)2차원 보드(board)에서 단어(word)가 상하좌우 인접한 연속 칸을 따라 존재하는지 확인하는 문제 문제링크: https://leetcode.com/problems/word-search 문제를 바라보는 관점문제의 핵심 조건: “연속된 경로 + 이미 방문한 칸 재사용 금지”그러면 질문을 이렇게 바꿀 수 있다. 👉 “보드에서 특정 칸을 선택하면 다음 칸은 어디로 이동할까?”답: 항상 상하좌우로 갈 수 있는 선택지 중 아직 방문하지 않은 칸여기서 자연스럽게 떠오르는 접근:특정 칸에서 시작해서 단어의 다음 글자를 탐색막히면 이전 상태로 돌아가서 다른 경로 탐색 이 때 이전에 방문했던 노드는 .. 이전 1 2 3 4 5 6 다음