일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Stack
- 자바
- bit manipulation
- Matrix
- hash table
- Method
- two pointers
- SQL
- array
- 코딩테스트
- implement
- geometry
- dynamic programming
- Binary Tree
- 코테
- greedy
- Counting
- 파이썬
- simulation
- Class
- Binary Search
- string
- Math
- java
- sorting
- Data Structure
- database
- Tree
- 구현
- Number Theory
- Today
- Total
목록Tree (28)
코린이의 소소한 공부노트

1. Input 1) int[] nums 2. Output 1) nums의 요소들로 높이 균형 이진 검색 트리를 만들어서 반환 - 답이 여러 가지일 경우 1개만 반환 3. Constraint 1) 1

1. Input 1) TreeNode root 2. Output 1) root가 좌우대칭 트리라면 true, 아니면 false를 반환 3. Constraint 1) 노드 수의 범위는 [1, 1000]이다. 2) -100 Output: false 5. Code /** * Definition for a binary tree node. * 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 =..

화은이는 이번 영어 시험에서 틀린 문제를 바탕으로 영어 단어 암기를 하려고 한다. 그 과정에서 효율적으로 영어 단어를 외우기 위해 영어 단어장을 만들려 하고 있다. 화은이가 만들고자 하는 단어장의 단어 순서는 다음과 같은 우선순위를 차례로 적용하여 만들어진다. (1) 자주 나오는 단어일수록 앞에 배치한다. (2) 해당 단어의 길이가 길수록 앞에 배치한다. (3) 알파벳 사전 순으로 앞에 있는 단어일수록 앞에 배치한다 M보다 짧은 길이의 단어의 경우 읽는 것만으로도 외울 수 있기 때문에 길이가 M이상인 단어들만 외운다고 한다. 화은이가 괴로운 영단어 암기를 효율적으로 할 수 있도록 단어장을 만들어 주자. 1. 입력 - 첫째 줄에는 영어 지문에 나오는 단어의 개수 N과 외울 단어의 길이 기준이 되는 M이 공..

1. 개념 정리 1) 이진 인덱스 구조를 활용하여 구간 합 문제를 효과적으로 해결해 줄 수 있는 자료구조 2) 펜윅 트리(Fenwick Tree)라고도 불린다. 3) 세그먼트 트리보다 구현하기 편하고 속도가 빠르다. - 세그먼트 트리는 필요한 리프 노드만 채우기 때문에 불완전 트리지만, 인덱스 트리는 리프 노드를 모두 채워서 만들기 때문에 인덱스를 활용할 수 있다. - 데이터의 개수가 N개일 때, 세그먼트 트리를 만들기 위해 필요한 공간을 통상 4*N만큼 준비했었다면 인덱스 트리를 만들 때는 N만큼만 준비하면 된다. 4) 인덱스는 1부터 사용하고, 인덱스를 활용하면 해당 인덱스의 값이 몇 개의 데이터의 합인지 알 수 있다. - 8비트로만 간단히 예시를 들어보면, 3과 -3을 비트 and 연산을 해보면 다..

1. Problem - 주어진 트리에서 두 노드 node1, node2의 최소 공통 조상을 찾아보자. - 최소 공통 조상(Lowest Common Ancestor, LCA)는 특정한 두 노드의 공통된 조상 중 가장 가까운 조상을 말한다. - 이진 트리가 아니어도 적용되는 알고리즘이다. - 다이나믹 프로그래밍을 이용하는 알고리즘이다. 2. Input 1) int[][] graph - graph[i][j]: i는 j의 부모 노드 2) int n - 노드의 개수 3) int node1 4) int node2 3. Output 1) node1과 node2의 최소 공통 조상 4. Explanation 1) 트리에 있는 모든 노드에 대해서 각 노드의 깊이(depth)를 구한다. 2) 모든 노드에 대해서 각 노드의 ..
1. Input 1) TreeNode root 2. Output 1) root에 있는 조건식을 계산한 결과를 반환 - leaf node: 0(false), 1(true) - non-leaf node: 2(OR), 3(AND) 3. Constraint 1) 노드 수의 범위는 [1, 1000]이다. 2) 0

1. Input 1) final TreeNode original 2) final TreeNode cloned - original을 복사한 트리 3) final TreeNode target - original의 노드 중 하나 2. Output 1) cloned에서 target과 같은 것을 찾아 반환 3. Constraint 1) 트리의 노드 수의 범위는 [1, 10^4]이다. 2) 노드의 값에는 중복이 없다. 3) 타겟 노드는 null이 아니다. 4. Example Input: tree = [7,4,3,null,null,6,19], target = 3 -> Output: 3 설명: 왼쪽 트리가 original, 오른쪽 트리가 cloned, 연두색이 target, 노란색이 반환해야 할 노드이다. 5. Cod..
1. Input 1) TreeNode root 2. Output 1) root의 모든 노드의 값이 같으면 true, 다르면 false를 반환 3. Constraint 1) 노드 수의 범위는 [1, 100]이다. 2) 0 Output: true Input: root = [2,2,2,5,2] -> Output: false 5. Code 1) 첫 코드(2023/06/06) /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, Tr..
1. Input 1) TreeNode root 2) int low 3) int high 2. Output 1) root에 있는 노드 값 중에서 [low, high] 범위 내의 값만 더한 결과를 반환 3. Constraint 1) 노드 수의 범위는 [1, 2*10^4]이다. 2) 1