전체 글
-
Compose 상태개발/Android 2024. 4. 6. 16:27
Compose에서의 상태 컴포즈는 선언형 UI로 UI의 구성 방법을 선언해 놓은 것이다. 따라서 함수에서 데이터를 직접 UI요소에 설정하지 않고 현재 상태에 따라 UI가 구성된다. 이 상태는 변화가 생기면 재구성(ReCompose)를 통해 화면을 업데이트 한다. 사용자의 상호작용이나 데이터의 변경 같은 이벤트가 발생할 때, Compose는 관련된 컴포저블 함수를 다시 호출하여 UI를 업데이트 한다. remember & MutableState Composable 함수는 UI를 구성하는 함수이다. 하지만 일반적인 함수와 동일하게 함수를 재실행하면 지역변수의 값은 초기화 된다. 이러면 유지하려는 상태가 없어지므로 비정상적으로 동작할 것이다. 이 때 사용하는 것이 remeber 이다. remember는 reco..
-
Android Compose Navigation(Jetsnack sample 분석)개발/Android 2024. 3. 23. 18:11
Navigation 내비게이션은 간단하게 설명하면 화면 전환을 도와주는 Jetpack 라이브러리다. Compose를 사용하기 전에도 내비게이션은 자주 사용해봤다. 나는 Activity안에 여러개의 Fragment를 내비게이션으로 이동하는 방식으로 자주 사용했다. 기존에는 xml폴더에 그래프를 만들어 연결하는 작업이 있었지만 Compose는 코드로 다 해결한다. 간단하게 개념을 정리하고 Android 공식 샘플인 Jetsnack에서의 코드를 분석해보려고 한다. https://github.com/android/compose-samples GitHub - android/compose-samples: Official Jetpack Compose samples. Official Jetpack Compose sam..
-
Compose 개요개발/Android 2024. 3. 9. 20:33
Android 개발을 하면서 힘든점을 꼽으라면 자주 바뀌는 개발 트렌드라고 생각한다. 물론 다른 분야(백엔드, 프론트 등등)을 해본건 아니여서 상대적인 비교를 할 수는 없지만 3년동안 일을 하면서 매번 새로운 기술을 익히며 적용했다. MVVM, CleanArchitecture, ViewModel, DataBinding, Flow 등등 당장 생각나는 것만 이정도가 있다. 확실히 처음 공부했을 때 보던 일반적인 구조의 앱과 실무는 많은 차이가 있다고 느꼈다. 이제 위에 나열한 기술을 적용해보고 어느정도 익숙해져서 이제는 어느정도 최신 트렌드를 다뤄봤다! 라고 생각했지만 Compose가 남았다. Compose가 나온지는 좀 됐고 뭔지 대충은 알고 있었지만 프로젝트 경험이 없었고 그렇게 대세가 될까 하는 생각도..
-
[백준] 1193 분수찾기 Kotlin개발/알고리즘 2023. 4. 28. 16:56
https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 처음으로 풀어본 구현 유형의 문제였다. 단순히 이차원배열을 생각하고 하나 하나 노드를 이동하면서 풀이를 생각했다. 문제는 통과했지만 다른 사람들의 풀이를 보고 구현 유형의 문제는 나처럼 푸는게 아니구나 느꼈다. 규칙성을 찾고 그걸 코드로 구현하는게 중요해 보인다. 내가 짠 코드는 아래와 같다. package baekjoon import java.io.BufferedReader import java.io.InputStreamReader fun main() = with(BufferedReader(InputStreamReader(Sy..
-
[백준] 5568 카드 놓기 Kotlin개발/알고리즘 2023. 4. 27. 17:20
https://www.acmicpc.net/problem/5568 5568번: 카드 놓기 예제 1의 경우 상근이는 11, 12, 21, 112, 121, 122, 212를 만들 수 있다. www.acmicpc.net dfs를 이용하여 모든 카드 경우의 수를 구했다. import java.io.BufferedReader import java.io.InputStreamReader var graph = mutableListOf() var visited = booleanArrayOf() val resultList = arrayListOf() var n = 0 var k = 0 fun main() = with(BufferedReader(InputStreamReader(System.`in`))) { n = read..
-
[백준] 2589 보물섬 Kotlin개발/알고리즘 2023. 4. 13. 17:19
https://www.acmicpc.net/problem/2589 2589번: 보물섬 첫째 줄에는 보물 지도의 세로의 크기와 가로의 크기가 빈칸을 사이에 두고 주어진다. 이어 L과 W로 표시된 보물 지도가 아래의 예와 같이 주어지며, 각 문자 사이에는 빈 칸이 없다. 보물 지도의 www.acmicpc.net 목표가 정해져있지 않는 최단거리 문제이다. 모든 지점마다 bfs를 돌리고 최대값을 return 하는 방식으로 접근했다. bfs를 돌 때마다 visited 배열을 false로 초기화한다. import java.io.BufferedReader import java.io.InputStreamReader import java.util.LinkedList import java.util.Queue import ..
-
[백준] 14496 그대, 그머가 되어 Kotlin개발/알고리즘 2023. 1. 23. 09:59
https://www.acmicpc.net/problem/14496 14496번: 그대, 그머가 되어 첫째 줄에 머호가 바꾸려 하는 문자 a와 b가 주어진다. 둘째 줄에 전체 문자의 수 N과 치환 가능한 문자쌍의 수 M이 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ M ≤ 10,000) 이후 M개의 줄에 걸쳐 치환 가능한 문 www.acmicpc.net 평범한 bfs 문제이다. Queue를 이용한 bfs에서는 Queue에 넣는 순간 방문처리를 해야 시간초과를 피할 수 있다. import java.io.BufferedReader import java.io.InputStreamReader import java.util.LinkedList import java.util.Queue var graph: Arra..
-
[백준] 21937 작업 Kotlin개발/알고리즘 2023. 1. 21. 10:32
https://www.acmicpc.net/problem/21937 21937번: 작업 민상이가 작업할 개수 $N$와 작업 순서 정보의 개수 $M$이 공백으로 구분되어 주어진다. 두 번째줄부터 $M + 1$ 줄까지 작업 $A_i$와 작업 $B_i$가 공백으로 구분되어 주어진다. 이때 두 값의 의미는 작 www.acmicpc.net 역방향으로 시작해 방문한 노드의 갯수만 세어주면 된다. dfs를 돌때마다 방문 처리를 하고 count를 return 한다. 처음 방문도 count를 세므로 출력전 -1을 해준다. import java.io.BufferedReader import java.io.InputStreamReader var graph: Array = arrayOf() var visited = boolea..