문제 https://leetcode.com/problems/unique-binary-search-trees-ii/ 주어진 n에 대해, 모든 구조적으로 유일한 BST(이진 검색 트리)를 반환하라. BST는 1부터 n까지 고유한 값을 갖는 n개의 노드로 구성된다. 답을 반환하는데에 순서는 무관하다. 풀이 DP와 메모이제이션을 이용 - 가장 작은 트리노드부터 만들어 이를 기록해두고, 계속해서 해당 memo를 사용하는 방식 시간 복잡도: O(n^2), 공간 복잡도: O(n^2) 1. JAVA public class LeetCode_95_UniqueBinarySearchTrees2 { public static class TreeNode { int val; TreeNode left; TreeNode right; T..
Scavenger란? Naver DEVIEW 2023 - 당신의 코드는 생각보다 많이 죽어있다. 발표영상 | GITHUB GitHub - naver/scavenger: A runtime dead code analysis tool A runtime dead code analysis tool. Contribute to naver/scavenger development by creating an account on GitHub. github.com - 런타임 Dead Code 분석 도구 - 메소드 호출 기록을 수집하여 시각화 - Java Agent 방식 사용 => 유지보수 용이, 컴파일 및 테스트 속도 향상! 컴포넌트 - Agent: 코드 베이스를 스캔하고, 어플리케이션 내 메소드 호출 정보를 주기적으로 Co..
문제 https://leetcode.com/problems/asteroid-collision/ 주어진 `asteroids` 배열은 연속한 소행성(asteroid)을 나타내는 정수로 이루어져있다. 각 소행성의 절대값은 이것의 사이즈를 나타내고, 부호는 방향을 나타낸다(+는 오른쪽, -는 왼쪽). 소행성들은 같은 속도로 움직인다. 모든 충돌이 끝난 후의 소행성의 상태를 반환하라. 만약 두 소행성이 만난다면, 더 작은 것이 폭발한다. 만약 두 소행성이 같은 크기라면, 모두 폭발한다. 같은 방향으로 움직이는 두 소행성은 절대 만나지 않는다. 풀이 class Solution { public int[] asteroidCollision(int[] asteroids) { ArrayDeque st = new ArrayD..
문제 https://leetcode.com/problems/add-two-numbers-ii/description/ 주어진 두개의 비어있지 않은 linked list는 각각 음수가 아닌 정수로 이루어져있다. 가장 중요한 숫자가 첫번째로 오며, 그들의 노드 각각은 한자리 수를 포함한다. 두 숫자를 더한 합을 linked list 형태로 반환하라. 두 숫자는 0일 경우를 제외하고, 앞자리가 0으로 나타나지 않는다. 풀이 Stack을 사용한 풀이 public static ListNode addTwoNumbers(ListNode l1, ListNode l2) { ArrayDeque st1 = new ArrayDeque(); ArrayDeque st2 = new ArrayDeque(); while (l1 != n..
문제 https://leetcode.com/problems/find-eventual-safe-states/description/ 각 노드의 라벨이 0부터 n-1까지 붙어있는 n개의 노드로 이루어진 방향 그래프가 있다. 그래프는 0-indexed 인 이차원 정수 배열 `graph`로 표현되고, graph[i]는 노드 i와 인접한 정수 배열이다. 즉, 노드 i로부터 grape[i]에 있는 노드들 간에는 간선이 존재한다. 만약 한 노드에서 나가는 간선이 없다면 해당 노드는 terminal node이다. 한 노드가 safe node라는 것은 해당 노드로부터 시작하는 모든 가능한 경로가 terminal node 혹은 다른 safe node로 이어진다는 것이다. 그래프의 모든 safe node를 포함하는 배열을 ..
문제 https://leetcode.com/problems/minimum-depth-of-binary-tree/description/ 주어진 이진트리에서 트리의 최소 깊이를 구하여라. 최소 깊이는 루트 노드부터 가장 가까운 리프 노드까지 내려가는 최단 거리에 있는 노드의 수이다. Note: 리프 노드는 자식 노드를 가지고 있지 않다. 풀이 1. BFS - 너비 우선 탐색 fun minDepth(root: TreeNode?): Int { if(root == null) return 0 val q = ArrayDeque() q.add(root) var depth = 1 while (q.isNotEmpty()) { val curSize = q.size repeat(curSize) { val curNode = q..