자율 학습/스터디 17

Binary Tree (DFS, BFS) vs. Binary Search Tree

1. Binary Tree (이진 트리)정의: 각 노드가 최대 두 개의 자식 노드를 가질 수 있는 트리 구조특징:자식 노드의 값에 대한 제약 없음.트리 구조에서 각 노드는 왼쪽과 오른쪽 자식 노드를 가질 수 있음. → 노드가 있을 수도 없을 수도 있음.트리의 순서나 정렬에 대한 규칙 없음.  2. Binary Search Tree (이진 검색 트리)정의: 이진 트리의 일종으로, 왼쪽 서브트리는 해당 노드보다 작은 값들로 구성되고, 오른쪽 서브트리는 해당 노드보다 큰 값들로 구성됨.특징:왼쪽 자식 노드의 값은 부모 노드보다 작고, 오른쪽 자식 노드의 값은 부모 노드보다 크다!!!따라서 검색, 삽입, 삭제가 빠르게 이루어질 수 있다. (평균 시간 복잡도: O(log n))균형이 맞지 않으면 성능이 떨어질 수..

[LeetCode 75] 700. Search in a Binary Search Tree

TreeNode 클래스는 주석 그대로 만들었음.타겟 트리 찾는 메소드 만들어서 왼쪽, 오른쪽 재귀적으로 탐색하게 하였음.public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; this.left = left; this.right = right; } public TreeNode findTree(TreeNode root, int target) { ..

[LeetCode 75] 215. Kth Largest Element in an Array

import java.util.Arrays;import java.util.Collections;class Solution { public int findKthLargest(int[] nums, int k) { Integer[] numsWrapper = Arrays.stream(nums).boxed().toArray(Integer[]::new); Arrays.sort(numsWrapper, Collections.reverseOrder()); return numsWrapper[k - 1]; }} 문제가 너무 쉬워서 아주 빨리 풀었는데 배열을 재정렬 하기 때문에 시간 복잡도가 O(n log n)이다.. 💡 풀이 포인트min-heap 활용PriorityQueue..

[LeetCode] 2352. Equal Row and Column Pairs

📌 문제 요약주어진 n x n 크기의 정수 행렬 그리드에서 행 ri와 열 cj가 동일한 요소를 가지는 쌍 (ri, cj)의 개수를 구하라.행과 열은 같은 순서로 동일한 값을 가져야 한다. 💡 풀이 포인트각 행과 각 열을 완전히 동일한 순서로 비교해야 함.두 배열(행과 열)을 비교할 때, 배열의 모든 요소를 하나씩 비교하는 방식으로..중복되는 쌍을 세지 않도록 주의 ✅ 풀이 방법이중 반복문으로 행과 열 비교각 행 ri와 열 cj를 k를 사용하여 일치하는지 비교일치하는 경우 카운트 +1총 카운트 반환 public class Solution { public int equalPairs(int[][] grid) { int n = grid.length; int count = 0; ..

[LeetCode] 2215. Find the Difference of Two Arrays

📌 문제 요약주어진 두 정수 배열 nums1과 nums2각각 nums1에는 있지만 nums2에는 없는 숫자와 nums2에는 있지만 nums1에는 없는 숫자를 구해서 두 개의 리스트로 반환하라.반환되는 리스트의 첫 번째 요소는 nums1에서만 존재하는 값들, 두 번째 요소는 nums2에서만 존재하는 값들을 포함해야 한다. 💡 풀이 포인트중복된 숫자는 결과에 한 번만 포함각 배열에서 상대 배열에 없는 값을 찾아내야 함.두 개의 리스트로 반환됨. ✅ 풀이 방법nums1과 nums2에서 중복을 제거한 후 각 배열의 차집합을 구합니다.차집합 = 하나의 집합에서 다른 집합의 원소 제외한 결과nums1에만 있는 원소 = nums1 - nums2nums2에만 있는 원소 = nums2 - nums1두 차집합을 각각 ..

[Docker] Docker container graceful shutdown (SIGTERM)

Linux에서는 SIGTERM 신호를 보내면 프로세스가 종료 절차를 수행하고,만약 종료되지 않았다면 사용자가 직접 SIGKILL 신호를 보내서 강제 종료 시켜야 한다.  리눅스와 달리 도커에서는 SIGTERM 신호 또한 강제 종료를 시킨다.때문에 graceful shutdown 할 수 있게 세팅하는 것이 좋다.  1. Docker Container 종료 개념1-1. SIGKILL : 즉시 강제 종료1-2. SIGTERM : 10초 대기 후 프로세스가 종료되지 않으면, SIGKILL 신호를 보내 강제 종료   2. Docker container Graceful shutdown1-1. graceful shutdown 이란➡️ 서비스가 종료될 때 현재 처리 중인 요청을 마무리하고 리소스를 적절하게 해제하여 서..