일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CollapsingToolbarLayout
- ViewModel
- kotlin
- HTTP
- hilt
- 백준
- BOJ
- 안드로이드
- 알림
- View
- sqlite
- Coroutine
- CustomView
- CoordinatorLayout
- recyclerview
- Behavior
- LiveData
- notification
- Navigation
- Android
- room
- AppBarLayout
- onMeasure
- lifecycle
- Algorithm
- 알고리즘
- onLayout
- activity
- DataBinding
- 코틀린
- Today
- Total
목록Algorithm (알고리즘) (34)
개발일지
개념 이분 그래프가 있을 때 A집합과 B집합을 최대한 매칭하는 경우 Alternating Path(교차 경로) 그래프 위의 경로 중 매칭되지 않은 정점부터 시작하여 매칭을 이어주고 있지 않은 간선과 이어주는 간선이 교차하면서 반복되는 경로 (X - O - X - O - X ....) (X : 연결안된 정점, O : 연결된 정점) Augmentine Path(증가 경로) 양 끝 정점이 매칭되어 있지 않은 교차경로 교차경로 안에서 증가경로를 반전하면 매칭의 크기를 늘릴 수 있다. 작동원리 1. A그룹에서 매칭에 속하지 않은 정점들의 레벨을 구한다. 2. 증가 경로를 체크한다. 3. 더 이상 증가경로를 찾지 못할 때까지 반복한다. 시간복잡도 O(V^(1/2) * E) 문제 9525 룩 배치하기 www.acmi..
개념 If p is prime and a is an integer not divisible by p, then 문제 16134 조합 www.acmicpc.net/problem/16134 16134번: 조합 (Combination) \(\begin{pmatrix}N\\R\end{pmatrix}\)의 값을 1,000,000,007로 나눈 나머지를 출력하자! (단, 1,000,000,007은 소수이다) www.acmicpc.net 코드 #include using namespace std; constexpr long long MOD = 1000000007; long long pow(long long x, long long y) { long long result = 1L; while (y) { if (y & 1)..

개념 강한 연결 요소(Strongly Connected Component)는 방향 그래프에서 서로 왕복할 수 있는 가장 큰 정접들의 집합입니다. 작동원리 1. DFS를 하면서 방문하는 순서대로 값을 할당하고, 스택에 넣는다. 2. DFS를 하면서 방문하지 않는 정점이나, 방문했지만 아직 SCC에 속하지 않은 정점들에게 할당된 값 중 가장 작은 값을 리턴한다. 3. 자신에게 할당된 값과 리턴값이 같으면 SCC이다. * 타잔 알고리즘은 스택을 사용하여 SCC를 추가하기 때문에 위상정렬이 된다. 시간복잡도 1. DFS할 때 O(V + E) O(V + E) 문제 2150 Strongly Connected Component www.acmicpc.net/problem/2150 2150번: Strongly Conne..

개념 강한 연결 요소(Strongly Connected Component)는 방향 그래프에서 서로 왕복할 수 있는 가장 큰 정접들의 집합입니다. 작동원리 1. 정방향 그래프로 DFS를 하면서 탐색이 끝나는 순으로 스택에 넣는다. 2. 스택에서 하나씩 꺼내면서 역방향 그래프로 DFS를 진행한다. 3. 역방향으로 DFS를 진행하면서 방문하는 정점들이 SCC이다. 시간복잡도 1. 정방향 그래프로 DFS -> O(V + E) 2. 역방향 그래프로 DFS -> O(V + E) O(V + E) 문제 2150 Strongly Connected Component www.acmicpc.net/problem/2150 2150번: Strongly Connected Component 첫째 줄에 두 정수 V(1≤V≤10,000..
개념 단절선이란 그 간선을 제거했을 때, 그래프가 두 개 또는 그 이상으로 나누어지는 간선을 말한다. 작동원리 DFS를 이용하여 정점이 몇 번째로 방문되는지 기록하고, 기록한 값 중에 최솟값을 반환한다. DFS를 통해 반환된 값들 중 자신보다 큰 값이 있으면 단절선이다. (아직 방문하지 않았다는 뜻으로, 지금 보는 정점이 아니면 갈 방법이 없다는 뜻, 즉 지금 보는 간선을 제거하면 그래프가 분리된다.) 시간복잡도 DFS를 할 때 O(V + E) 문제 11400 단절선 www.acmicpc.net/problem/11400 11400번: 단절선 첫째 줄에 두 정수 V(1≤V≤100,000), E(1≤E≤1,000,000)가 주어진다. 이는 그래프가 V개의 정점과 E개의 간선으로 이루어져 있다는 의미이다. 다..
개념 단절점이란 그 정점을 제거했을 때, 그래프가 두 개 또는 그 이상으로 나누어지는 정점을 말한다. 작동원리 DFS를 이용하여 정점이 몇 번째로 방문되는지 기록하고, 기록한 값 중에 최솟값을 반환한다. - DFS를 시작한 Root일 경우 DFS를 통해 갈 수 있는 정점이 2개 이상일 경우 단절점이다. (Root를 통해 갈 수 있다는 정점이 2개 이상이면 Root를 제거했을 때 그래프가 2개 이상으로 분리된다는 뜻이다.) - DFS를 시작한 Root가 아닐 경우 DFS를 통해 반환된 값들 중 자신보다 크거나 같은게 있으면 단절점이다. (자신보다 값이 크거나 같은게 있다면, 아직 DFS를 통해 방문하지 않은 정점이 있다는 뜻이고, 자신이 없을 경우 방문하지 못하기 때문에 그래프가 분리된다는 뜻이다.) 시간..

개념 어떤 일을 할 때 순서를 찾는 알고리즘이다 . 작동원리 1. InDegree가 0인 정점을 queue에 넣는다. 2. queue에서 pop하고 갈 수 있는 정점들의 InDegree를 감소시키고, InDegree가 0이면 queue에 넣는다. 3. 1 ~ 2를 반복한다. 시간복잡도 정렬할 때 BFS를 사용 -> O(V + E) 문제 1948 임계경로 www.acmicpc.net/problem/1948 1948번: 임계경로 첫째 줄에 도시의 개수 n(1 ≤ n ≤ 10,000)이 주어지고 둘째 줄에는 도로의 개수 m(1 ≤ m ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 도로의 정보가 주어진다. 처음에는 도로의 www.acmicpc.net 코드 #include using..

개념 Lowest Common Ancestor의 약자로써 트리에서 가장 가까운 공통 조상을 찾는 알고리즘이다. 쉬운 방법으로 두 노드의 높이를 맞추고 하나씩 올라가면서 검사하는 방법이 있다. -> O(n) 시간 복잡도를 줄이는 방법 ancestor라는 2차원 배열을 만들고, ancestor[index][i] = index의 2^i 위에 부모노드를 저장하고 높이를 올릴 때 2^n단위로 올린다. -> O(logn) ancestor[index][i] = ancestor[ancestor[index][i - 1][i - 1] 작동원리 1. DFS를 사용하여 각 노드의 Level과 ancestor배열을 초기화한다. 2. 높이가 깊은 노드의 높이를 2^n 단위로 올리면서 맞춘다. 3. 두 노드가 같은 뿌리에 있으면 ..