Apple is Apple
article thumbnail
[Android] Compose (RE)
Android 2024. 3. 4. 22:17

Compose Jetpack Compose is Android’s recommended modern toolkit for building native UI. It simplifies and accelerates UI development on Android. Quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs. from Android Document 컴포즈는 안드로이드가 추천하는 네이티브 UI 작성을 위한 모던 툴킷이다. 컴포즈는 안드로이드의 UI 개발을 빠르고 간단하게 해줍니다. 어서 앱에 적용해서 적어진 코드, 강력한 도구들, 직관적인 API를 누려 보자.. (구글 문서 발췌) 컴포즈는 무엇이고..

article thumbnail
[BOJ - 22233] [백준 - 22233] 가희와 키워드[Silver - 2] [Solved by Kotlin]
PS/BOJ 2024. 2. 19. 16:35

문제 설명 가희는 블로그를 운영하고 있습니다. 가희는 블로그에 글을 쓰기 위해, 메모장에 키워드를 적곤 합니다. 지금까지 메모장에 써진 키워드는 모두 서로 다르며, 총 N개가 존재합니다. 가희는 새로운 글을 작성할 때, 최대 10개의 키워드에 대해서 글을 작성합니다. 이 키워드들 중에 메모장에 있었던 키워드는 가희가 글을 쓴 이후, 메모장에서 지워지게 됩니다. 가희는 블로그에 글을 쓰고 나서, 메모장에 있는 키워드 개수가 몇 개인지 알고 싶습니다. 가희를 도와주세요. 입출력 예 입력 첫 번째 줄에 가희가 메모장에 적은 키워드 개수 N, 가희가 블로그에 쓴 글의 개수 M이 공백으로 구분해서 주어집니다. 2번째 줄부터 N+1번째 줄까지 메모장에 적은 키워드 N개가 주어집니다. N+2번째 줄부터 N+M+1번째..

[Android] Dagger (basic)
Android 2024. 1. 29. 22:46

DI (Dependency Injection) DI(dependency injection)는 프로그래밍에 널리 사용되는 기술이며 Android 개발에 매우 ​​적합하다. DI 원칙을 따르면 좋은 앱 아키텍처의 토대를 마련할 수 있다. 종속성 주입을 구현하면 다음과 같은 이점이 있다. 코드 재사용성 리팩토링이 용이 테스트 용이성 먼저, 앱 수준 gradle에 플러그인을 추가 plugins { id 'com.android.application' id 'kotlin-android' // dagger를 위한 plugin id 'kotlin-android-extensions' // 어노테이션을 통해 컴파일 타임에 코드 생성을 도와줌 id 'kotlin-kapt' } 그 후, dagger 라이브러리를 추가 depe..

2024-01-26
TIL 2024. 1. 26. 22:07

DI (Dependency Injection) DI(dependency injection)는 프로그래밍에 널리 사용되는 기술이며 Android 개발에 매우 ​​적합하다. DI 원칙을 따르면 좋은 앱 아키텍처의 토대를 마련할 수 있다. 종속성 주입을 구현하면 다음과 같은 이점이 있다. 코드 재사용성 리팩토링이 용이 테스트 용이성 먼저, 앱 수준 gradle에 플러그인을 추가 plugins { id 'com.android.application' id 'kotlin-android' // dagger를 위한 plugin id 'kotlin-android-extensions' // 어노테이션을 통해 컴파일 타임에 코드 생성을 도와줌 id 'kotlin-kapt' } 그 후, dagger 라이브러리를 추가 depe..

article thumbnail
[programmers][Kotlin] 이진 변환 반복하기
PS/programmers 2024. 1. 26. 15:31

문제 설명 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. 1. x의 모든 0을 제거합니다. 2. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한 조건 s의 길이는 1 이상 150,000 이하입니다. s에는 '1'이 최소 하나 이상 포함되어 있습니다..

article thumbnail
2024-01-18
TIL 2024. 1. 18. 21:11

Paging basic 사용자에게 정보를 표시하는 가장 일반적인 방법 중 하나는 리스트(안드로이드에선 리사이클러뷰나 리스트 뷰등이 있을 것이다.)를 사용하는 것이다. 그러나 때때로 이러한 목록은 전체 콘텐츠로 통하는 작은 창에 불과다. 사용자는 제공되는 정보를 스크롤할 때, 하단에 더 많은 데이터가 있을 것이라고 예상하는 경우가 많다. 데이터를 가져올 때 효율적이고 원활하게 진행되어 계속 늘어나는 로드가 사용자 환경을 저해하지 않아야한다. (사용자 경험) -> 한 번에 로딩 X 그러므로 점진적인 로딩은 성능 향상에도 도움이 된다. 앱에서 많은 양의 데이터를 한 번에 메모리에 저장할 필요가 없기 때문이다. 정보를 점진적으로 가져오는 이 프로세스를 페이징이라하며 각 페이지는 가져올 데이터 청크에 대응한다. ..

article thumbnail
2024-01-16
TIL 2024. 1. 16. 15:57

앱 모듈화 개요 단일 Gradle이 아닌, 여려 Gradle 모듈이 있는 프로젝트를 다중 모듈 프로젝트라고 한다. (모듈화의 결과) 배경 - 증가하는 코드의 문제 프로젝트가 진행되면서 코드베이스가 계속 증가하게 되는데, 시간이 지남에 따라 확장성, 가독성 및 전반적인 품질이 떨어지는 경우가 많다. 모듈화는 유지 관리 가능성을 개선하고 이런 문제를 방지할 수 있는 방식으로 코드베이스를 구조화 하는 방법이다. 모듈화란? 모듈화는 코드베이스를 느슨하게 결합된 독립적인 부분으로 구성하는 방법이다. 각 모듈은 독립적이며 명확한 역할을 한다. 하위 문제를 해결하기 위해 문제를 더 작고 쉬운 문제로 나누면 대형 시스템 설계와 유지보수의 복잡성이 줄어들게 된다. 모듈화의 장점 재사용성 - 모듈화를 사용하면 코드를 공유..

[Android] Compose (basic)
Android 2024. 1. 15. 16:15

Jetpack Compose UI 개발을 간소화하고 간편하게 할 수 있도록 도와주는 툴킷. 기존의 UI는 명령형 방식이었지만, Compose는 선언형 방식. UI가 어떻게 보일지에 대한 구현에서 무엇을 보여주면 되는지에 대한 구현으로 변경. 뷰의 상태만 선언하여 구현 부분은 프레임워크에게 맡기는 방식. (알아서 만들어 줌) 데이터가 변경되면 프레임 워크가 알아서 해당 함수들을 재호출(리컴포지션)하여 View를 업데이트. 적은 코드, 유지보수, 재사용 및 확장성 용이. 기존에는 xml에 직접 그리고 Activity에서 findViewById, ViewBinding, DataBinding을 통해 컴포넌트에 접근 했지만, Compose는 Kotlin을 통해 직접 UI를 다룰 수 있음 xml 대신 setCont..

2024-01-12
TIL 2024. 1. 13. 16:01

package com.example.compose.rally import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.padding import androidx.compose.material.Scaffold import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtim..

article thumbnail
[BOJ - 5397] [백준 - 5397] 키로거[Silver - 2] [Solved by Kotlin]
PS/BOJ 2024. 1. 8. 14:28

문제 설명 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 강산이는 키보드로 입력한 키는 알파벳 대문자, 소문자, 숫자, 백스페이스, 화살표이다. 입출력 예 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1..