일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Number Theory
- Method
- implement
- 파이썬
- greedy
- Counting
- 구현
- 코딩테스트
- Tree
- Matrix
- Data Structure
- database
- Math
- Class
- dynamic programming
- Binary Search
- 코테
- bit manipulation
- geometry
- array
- Binary Tree
- SQL
- hash table
- sorting
- 자바
- Stack
- simulation
- java
- two pointers
- string
- Today
- Total
목록분류 전체보기 (1234)
코린이의 소소한 공부노트
1. Input 1) String[] words 2. Output 1) 각 단어들에 공통으로 나타나는 알파벳을 하나씩 담은 리스트를 반환 - 모든 단어에 a가 2개씩 있다면 반환하는 리스트에도 a가 2개 있어야 한다. - 정렬 순서는 상관 없다. 3. Constraint 1) 1

1. Input 1) char[][] board - board는 8*8 체스보드를 나타낸다. - ‘R': 룩. board에 딱 1개뿐이다. 상하좌우 중 한 방향을 선택해 가고싶은 만큼 이동할 수 있다. - 'B': 비숍. 비숍에 막히면 룩은 이동할 수 없다. - ‘p: 폰. 룩이 잡을 수 있는 말이다. - ‘.': 보드의 빈 공간을 뜻한다. 2. Output 1) 룩(R)이 잡을 수 있는 폰의 개수를 반환 3. Constraint 1) board.length == 8 2) board[i].length == 8 3) board에는 'R', '.', 'B', 'p' 이외의 문자는 없다. 4. Example Input: board = [[".",".",".",".",".",".",".","."], -> Out..
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
1. Input 1) int[] deck 2. Output 1) deck에 있는 카드를 1개 이상의 그룹으로 나눌 때, 다음 조건을 만족하게 나눌 수 있다면 true를, 아니면 false를 반환 - 각 그룹에는 정확이 x장의 카드가 있어야 한다.(x>1) - 한 그룹에 있는 모든 카드에는 같은 숫자가 적혀 있어야 한다. 3. Constraint 1) 1

1. Input 1) TreeNode root 2. Output 1) root를 inorder로 읽어온 후 모든 노드가 오른쪽 자식만 갖게 재배열한 결과를 반환 3. Constraint 1) 노드 수의 범위는 [1, 100]이다. 2) 0

2*n 크기의 직사각형을 1*2, 2*1, 2*2 타일로 채우려고 한다. 1. 입력 - 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) - n이 직사각형의 가로다. 2. 출력 - 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 3. 예제 4. 코드 import java.util.*; class Main{ public static void main(String[] args){ int n = new Scanner(System.in).nextInt(); if(n>2){ int[] d = new int[n]; d[0] = 1; d[1] = 3; for(int i=2 ; i

2*n 크기의 직사각형을 1*2, 2*1 타일로 채우려고 한다. 1. 입력 - 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) - n이 직사각형의 가로다. 2. 출력 - 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 3. 예제 4. 코드 import java.util.*; class Main{ public static void main(String[] args){ int n = new Scanner(System.in).nextInt(); if(n>2){ int[] d = new int[n]; d[0] = 1; d[1] = 2; for(int i=2 ; i

1. Problem - 크루스칼 알고리즘을 사용하여 모든 노드를 연결하는 최소 비용을 구해보자. - 최소 비용 신장 트리(minimum cost spanning tree)를 만드는 대표적인 알고리즘이다. - 각 노드를 연결하는 간선의 정보(연결된 노드, 비용)를 이용해 간선을 정렬한 후 사이클을 만들지 않게 적은 비용의 간선부터 차례대로 선택해 나간다. - 최소한의 비용으로 모든 노드를 이어야 하기 때문에, 사이클을 만드는 것은 비용 낭비가 된다. - 간선을 선택하기 전에 사이클 테이블을 확인해야 하는데, 이는 이미 연결된 노드인지 알아보기 위함이다. 사이클 테이블은 union-find(합집합 찾기) 알고리즘을 이용한다. 2. Input 1) int[][] graph - 연결된 노드를 표현 2) int[..

1. Problem - 여러 개의 노드 중 2개를 선택했을 때, 두 노드가 같은 그래프에 있는지 알아보자. - 합집합 찾기(union find) 알고리즘은 i번 노드에 대한 부모 노드의 값을 arr[i]에 저장해서 m번 노드와 n번 노드의 부모가 같다면 같은 그래프에 있다고 판단하는 알고리즘이다. - 한 그래프의 노드들을 연결할 때 부모 노드가 여러개가 생긴다면 더 작은 값으로 저장한다. 이 과정을 합침(union) 과정이라 한다. - 합침 과정에서 최종 부모를 찾기 위해 재귀적으로 메서드를 호출하게 된다. - 찾기(find) 과정에서는 두 노드의 부모를 찾아 같은지 확인한다. 2. Input 1) int[][] graph - 연결된 노드를 표현 2) int a, b 3. Output 1) a, b가 같..