본문 바로가기

Kotlin17

[알고리즘] 그래프 탐색 알고리즘(DFS, BFS) 그래프 탐색이란?많은 양의 데이터들 중에서 원하는 데이터를 찾는 과정을 탐색이라고 하는데,그래프에서 원하는 데이터를 찾는 과정을 그래프 탐색이라 부른다. 그래프 탐색 알고리즘에는 DFS, BFS가 있다.DFS(Depth-First Search): 깊이 우선 탐색BFS(Breadth-First Search): 너비 우선 탐색 깊이 우선 탐색(DFS)깊이 우선 탐색 알고리즘은 그래프의 자식 데이터에 들어간 후, 자식의 자식 데이터를 자식의 자식의 자식 데이터를 들어가는 식으로, 한 가지를 끝까지 파고 들어가서 탐색하는 알고리즘을 뜻한다. 한 줄기를 끝까지 파고든 후, 다음 줄기로 이동해 다시 끝까지 파고드는 방식으로 작동하는 알고리즘이다.  너비 우선 탐색(BFS)너비 우선 탐색은 시작 데이터에서 자신의 자.. 2024. 6. 22.
[Kotlin] 공부일지(2024-06-15) 오늘 공부한 내용 정리(2024년 6월 15일)  1. 알고리즘 문제풀이A. 2xn 타일링 2(백준, S3, 11727번)문제 내용 문제 풀이 방법2 x n의 직사각형을 타일 1 x 2, 2 x 1, 2 x 2로 빠짐없이 채우는 경우의 수를 구해 출력.  해결 코드(스포 주의)더보기import java.util.Scannerfun main() = with(Scanner(System.`in`)) { val fillArray = Array(nextInt()) { 0 } for (i in fillArray.indices) { if (i == 0) fillArray[0] = 1 else { // 홀수 index임 if (i % 2 != .. 2024. 6. 15.
[Kotlin] 상속(Inheritance) 상속이란?부모의 자원을 자식이 물려받아 사용하는 것을 상속이라고 한다. 상속은 클래스 간의 관계를 정의하고 코드의 재사용성을 높이기 위해 사용된다. 상속을 통해 하나의 클래스가 다른 클래스의 속성과 함수를 물려받아 사용할 수 있다.  상속이 필요한 경우상속이 필요한 경우는이미 존재하는 클래스를 확장해 새로운 속성이나 함수를 추가한 클래스를 만들어야 할 때,여러 개의 클래스를 만들었는데 클래스들의 공통점을 뽑아 코드 관리를 편하게 해야 할 때 사용된다.  상속의 구성속성과 함수를 물려주는 쪽을 슈퍼 클래스(부모 클래스), 물려받는 클래스를 서브 클래스(자식 클래스)라고 한다.상속을 하기 위해서는 자식 클래스의 끝에 콜론(:)을 달고 상속받을 부모 클래스의 이름과 파라미터를 정의해 주면 된다.class `자.. 2024. 6. 14.
[Android, Kotlin] 카테고리 기능 구현 (17) 이번 포스팅에서는 마지막 기능인 카테고리 기능을 구현한 것에 대해 포스팅을 하려고 한다.꽤나 오래 걸렸는데, 내가 천천히 개발한 것도 있고 카테고리를 만들면서 다른 UI적 요소와 기능들이 추가되어야 했기 때문에 오래 걸렸던 것 같다. 바로 내가 어떻게 카테고리 기능을 구현했는지 간단하게 알아보도록 하자.간단히 알아볼 예정이라 코드에 대한 설명이 미흡할 수 있다..! 1. 카테고리 화면 생성우선은 먼저 카테고리 화면을 생성해 주었다.카테고리 화면에서는 자신이 생성한 모든 카테고리를 볼 수 있고, 카테고리를 수정하거나 삭제할 수 있도록 만들어 주었다. @Composablefun CategoryScreen(categoryViewModel: CategoryViewModel = viewModel()) { . . .. 2024. 5. 11.
[Android, Kotlin] 통계 화면 구성하기 (14) 이번에 드디어 통계 화면 구현을 마무리 짓게 되었다. firebase realtime database를 썼을 때는 어떻게 구현해야 할까 막막했는데 firestore로 구현하니까 firestore에 내장된 필터 덕분에 따로 차트용 collection을 만들 필요 없이 하나의 collection으로 해결했다. 그러면 바로 통계 화면을 제작하면서 겪었던 시행착오들을 알아보자. 1. 통계 화면 ui 요소 추가 이번에 planner를 만들면서 통계 화면에 차트 2개(이번 주 일정, 주간 일정)만 있는 건 너무 심심해 보여서 ui 요소도 추가하고 차트 데이터도 바꾸기로 했다. 이번 주 일정을 보여주는 차트는 현재 날짜를 기준으로 그 주에 생성한 일정과 완료한 일정 2개의 데이터를 보여주는 차트였다. 다양한 데이터가.. 2024. 4. 14.
[Android, Kotlin] firebase 데이터베이스 변경하기 (13) 오랜만에 planner v2를 만져 보았다. 지금까지의 회사생활에서 보고 배운 것을 바탕으로 데이터베이스 쪽에 새로 수정해야 할 것들이 있어서 데이터베이스 코드를 전부 갈아주는 작업을 해주었다. 지금 바로 내가 어떤 작업을 했는지 알아보도록 하자. 1. 기존 데이터베이스의 문제점 planner v2에서는 firebase realtime database를 사용하고 있었다. 하지만 현재 통계 화면을 만들어야 하는 나의 경우에는 저장된 plan 데이터를 바탕으로 데이터를 필터링해서 통계 데이터를 구성해야 하는 상황이었다(데이터베이스를 변경한 가장 큰 이유이다.) 하지만 realtime database에서는 데이터를 필터링하기가 힘들어서 바로 이번에 코드도 볼 겸에 데이터베이스 코드를 모두 바꿔주기로 했다. 2.. 2024. 4. 10.
[Kotlin] 배열과 Map에 대해 알아보기 요즘 필자는 알고리즘 문제를 풀고 있다. 알고리즘 문제를 풀다 보면 배열은 거의 대부분의 문제에서 사용하는 것 같고, HashMap도 종종 사용하는 것 같았다. 그래서 이번에 코틀린의 배열과 HashMap의 차이에 대해 간단히 설명해보고자 한다. 앞으로 이런 간단한 알고리즘 개념에 대한 포스팅이 올라올 것 같다. 1. 배열(Array) 배열은 코틀린을 공부하지 않은 사람이라도 프로그래밍 언어를 하나라도 공부해 본 경험이 있으면 바로 알 수 있을 것이다. 바로 데이터의 집합을 배열이라고 하는데 자바의 배열 선언과는 달리 코틀린의 배열은 상당히 편리하면서도 복잡(?)하다.(필자 기준) 필자가 왜 복잡하게 느꼈냐면, 코드로 설명해 주겠다. 자바의 경우에는 다음과 같이 배열을 만들 수 있다. int[] intA.. 2023. 10. 27.
[Android, Kotlin] Compose에서 glance를 이용해 위젯 만들기 이번에 공부한 내용은 compose로 위젯을 만드는 라이브러리인 glance이다. glance의 존재(?)는 이전에 들으러 갔던 컨퍼런스 강연에서 glance에 관련된 강연을 들게 되었는데, 그때부터 기회가 되면 공부해 보자 라는 생각을 하게 되었다. 그게 지금이다. glance는 compose에서 위젯을 쉽게 만들 수 있게 해주는 라이브러리이고 2023년 8~9월에 1.0.0을 출시한 따끈따끈한 신상(?) 라이브러리이다. 아무튼 그래서 이번에 compose glance를 공부한 내용을 블로그에 정리해보려 한다. 그럼 바로 glance 사용법을 알아보자. 1. 라이브러리 추가하기 먼저 glance 라이브러리를 추가해 준다. // glance implementation("androidx.glance:gla.. 2023. 10. 6.
[Android, Kotlin] compose에서 api 통신하기 이전 포스팅의 연장선입니다. https://rkdrkd-history.tistory.com/55 [Android, Kotlin] Android clean architecture 프로젝트에서 api 에러 핸들링하기 clean architecture 프로젝트를 구상하고 개발하다 보면 api error 처리를 어떻게 하고 있는가? 예전의 필자는 그냥 무지성으로(?) presentation layer에 try catch를 이용해 처리를 했었었다. 하지만 그 방법을 rkdrkd-history.tistory.com 이전 포스팅에서 clean architecture 관점에서 api error handling 방법을 공부해 봤는데, 이번 글에서는 지난 글의 연장선인 clean architecture 관점에서 compo.. 2023. 8. 3.
[Android, Kotlin] Android clean architecture 프로젝트에서 api 에러 핸들링하기 clean architecture 프로젝트를 구상하고 개발하다 보면 api error 처리를 어떻게 하고 있는가? 예전의 필자는 그냥 무지성으로(?) presentation layer에 try catch를 이용해 처리를 했었었다. 하지만 그 방법을 사용했을 때, 일일이 try catch문을 작성해야 하는 불편함과 presentation layer에서만 처리하는 것이 맞나 이런 의문들이 들기 시작했다. 그래서 이번 포스팅에서 clean architecture project에서 api error handling logic을 작성하는 방법을 공부하고 적어보았다. 1. error handling 로직은 어떤 layer에 작성되어야 하는가?? 필자는 data layer에서 http status code에 따른 예.. 2023. 8. 1.
[Kotlin, Ktor] ktor 프로젝트 시작하기(1) 친구들이랑 함께 하는 프로젝트에서 서버 부분을 ktor로 바기로 결정 났다. 처음 들어본 ktor이지만, 검색을 좀 해보니까 kotlin으로 만들 수 있는 서버라더라 이번 기회에 공부해 보면서 ktor에 대해 알게 된 것들을 블로그에 남겨보려 한다. 서론이 길었으니 바로 시작하도록 하자. Ktor?? ktor는 kotlin으로 만들어진 비동기 웹 애플리케이션 프레임워크이다.ktor로 api 요청을 만들어서 android retrofit과 사용하는 것이 나의 목표이다. 이번 포스팅에서는 ktor 프로젝트 만들기만 해 보겠다.이 이후의 개념들의 필자가 공부해서 추후에 새로 포스팅을 올려보겠다. https://ktor.io/ Ktor: Build Asynchronous Servers and Clients in.. 2023. 6. 12.
[Android, Kotlin] android custom dialog 만들기 custom dialog는 안드로이드를 개발하면서 자주 쓰이는 팝업 창을 생성해주는 기능이다. 필자도 많이 자주 쓰지만, 많이 까먹기(?) 때문에 이번에 기록을 남겨보려 한다. custom dialog 만드는 방법 1. custom dialog로 사용할 xml 파일 만들기 먼저 dialog의 xml로 레이아웃을 만들어 준다. 2. 다이얼로그 생성하기 일단 필자는 다이얼로그를 뷰 바인딩으로 구현 할 것이기 때문에 그래들에 추가해주었다. viewBinding { enabled = true } 그 다음에 다이얼로그를 구현한다.(필자는 fragment에 다이얼로그를 구현했다.) activity?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) v.. 2022. 11. 20.
[Android/Kotlin] retrofit2 정리 오늘 예제는 http와 통신하는 방법인 retrofit에 대해 정리해보았다. 1. gradle 추가 implementation "com.squareup.retrofit2:retrofit:2.9.0" implementation "com.squareup.retrofit2:converter-gson:2.9.0" 2. api service api 구현은 박스오피스 영화 순위를 예로 들겠다. interface RetrofitInterface { @GET("http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json") fun getBoxOffice( @Query("key") key: String?, @Query("ta.. 2022. 5. 13.
[Android] Room 사용법과 RecyclerView를 활용한 예제 이번 예제는 안드로이드의 가상 데이터베이스인 room을 활용해 데이터를 저장하고, 그것을 recyclerview에 보이게 하는 예제를 해보겠다. room 을 사용하기 위해서는 먼저 gradle에 추가를 해줘야 한다. build.gradle(app) plugins { id 'kotlin-kapt' ... } android { ... } dependencies { implementation "androidx.room:room-runtime:2.4.2" kapt "androidx.room:room-compiler:2.4.2" } 추가를 하고 나서, 데이터베이스에 들어갈 데이터들을 만들줘야 한다. 1. 데이터베이스 개체 클래스 생성 @Entity(tableName = "chat_table") class Chat.. 2022. 4. 12.
[Kotlin] coroutine 개념 정리 오늘은 내가 공부했던 코루틴의 개념을 알아보겠다. 코루틴의(coroutine) 개념 코루틴은 kotlin에서 사용하는 동시성 프로그래밍의 일종이다. 최근에 코틀린을 사용하는 앱이 늘어남에 따라, 구글에서도 강력히 추천하는 실시간 처리 라이브러리 이다. 코루틴 코루틴(coroutine)은 루틴의 일종 코루틴의 "co" 는 with, together를 뜻한다. 협동 루틴이라 할 수 있다. 코루틴의 특징 코루틴은 이전에 자신의 실행이 마지막으로 중단된 지점의 바로 다음 장소에서 실행을 재개한다. 비동기 처리에 대한 코드를 간단히 작성해준다. 비동기 콜백 처리를 순차적으로 하게 해준다. 이제 개념을 알았으니, 간단한 코드를 보면서 이해해 보자. 코틀린 예제 GlobalScope.launch { // launch.. 2022. 4. 3.
728x90