일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DataBinding
- AppBarLayout
- onMeasure
- 알림
- lifecycle
- BOJ
- Coroutine
- kotlin
- sqlite
- Behavior
- Algorithm
- room
- ViewModel
- notification
- CustomView
- LiveData
- activity
- recyclerview
- 안드로이드
- 코틀린
- HTTP
- CollapsingToolbarLayout
- 알고리즘
- hilt
- onLayout
- CoordinatorLayout
- Navigation
- 백준
- View
- Android
- Today
- Total
목록Programming (프로그래밍) (212)
개발일지
Gradle 설정 dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7") } Thread vs Coroutine Thread와 Coroutine은 동시성을 보장하기 위한 기술이다. Thread Preempting Scheduling 자원을 서로 차지하려고 노력하고 OS가 Context Switching을 통해 Thread에게 자원을 할당한다 -> Overhead발생 Thread자체 Stack메모리를 가지고 JVM Stack을 차지한다. Coroutine Cooperatively 처리 단위가 Thread가 아닌 Coroutine에서 제공하는 Job Object단위로 하나에 Thread에서 진행된다. Thread..
개념 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를 통해 방문하지 않은 정점이 있다는 뜻이고, 자신이 없을 경우 방문하지 못하기 때문에 그래프가 분리된다는 뜻이다.) 시간..
개념 CCW 알고리즘을 사용하여 판별할 수 있다. 위 케이스 같은 경우 CCW(C, D, B) * CCW(C, D, A) 가 음수인 경우 선분이 교차한다고 할 수 있다. 하지만 위 그림과 같은 경우가 있을 수도 있다. 이러한 경우 CCW(C, D, B) * CCW(C, D, A) < 0 && CCW(A, B, C) * CCW(A, B, D) < 0 으로 확인하여 찾을 수 있다. 위 케이스 같은 경우 CCW(A, B, C) == 0 && CCW(A, B, D) == 0을 만족하고 C가 A와 B 사이에 있는지 확인하면 된다. 작동원리 1. CCW로 판별한다. 시간복잡도 CCW를 사용할 때 O(1) 문제 2162 선분 그룹 www.acmicpc.net/problem/2162 2162번: 선분 그룹 첫째 줄에 ..
개념 어떤 일을 할 때 순서를 찾는 알고리즘이다 . 작동원리 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..