본문 바로가기

전체 글

(86)
[Kotlin] 백준 2178 (ft. BFS) 📚 백준 2178 BFS 문제 직접 풀어보려는 사람들을 위해 접근 방법에 대한 힌트부터 작성한다. 전체 코드는 최하단을 확인 바람 미로 탐색 문제 유형을 채험해 보는데 가장 좋은 문제라고 생각된다. 일반적으로 이런 문제는 큐(Queue)에 현재 위치의 행과 열의 인덱스를 저장한다. 이 문제의 경우, 각 칸을 방문할 때마다 해당 칸까지 이동하는 데 필요한 최소 이동 횟수를 계산하면 된다. 나는 위치 정보 저장을 위한 큐(Queue)와 이동 횟수 저장을 위한 2차원 List를 사용했다. 그리고 현 위치를 기준으로 상하좌우 한칸씩만 검사해주며 진행하는 방식으로 풀었다. 큐에 저장할 값 - 위치 정보: 현재 위치의 행과 열 인덱스, 예를 들어 현재 위치가 2행 3열이면, Pair(2, 3)으로 큐에 저장했다. ..
벨로그 좀 써봤는데, 결국 얘가 짱이다 벨로그 markdown으로 글 작성해서 좋긴한데, 몬가 몬가임 그냥 쓰던 티스토리나 잘 써야겠다
Compose Preview 오류 This version (1.3.2) of the Compose Compiler requires Kotlin version 1.7.20 but you appear to be using Kotlin version 1.9.21 which is not known to be compatible. Please fix your configuration (or `suppressKotlinVersionCompatibilityCheck` but don't say I didn't warn you!). Xml UI 방식에서 Compose로 리팩토링을 진행하던 중, Preview를 확인하기 위해 빌드를 하는데 계속 위와 같은 오류가 발생했다. 코럼 고렇치ㅋㅋ 한번에 잘 풀리는 일이 없네ㅋㅋ! 일단 본인의 경우, Kotlin ..
안드로이드 디바이스 정보 가져오기 지난 글에 이어서 로그를 남기는데 사용했던 디바이스 정보를 가져오는 함수들을 기록해 두려고 한다. 1. 디바이스 모델 명, OS 버전, Api level 정보 가져오기 fun getOSVersion(): String { val deviceModel = Build.MODEL val version = Build.VERSION.RELEASE val sdkInt = Build.VERSION.SDK_INT return "Device Model: $deviceModel, OS Version: $version(Api level: $sdkInt)" } 2. 디바이스 배터리 정보(잔여량) 가져오기 fun getBatteryLevel(context: Context): String { val batteryStatus: In..
사용 중인 네트워크의 타입 파악하기 앱을 리팩토링해도 계속 DNS 오류가 발생한다. 미치겠네ㅋㅋ 원인이 뭔지 일단 서버에 로그를 남겨서 데이터를 수집해 보려한다. 데이터에 이것저것 다 집어 넣는 중인데, 그 중 사용자가 이용 중인 네트워크의 종류를 포함사키는 것이 좋을 것 같다고 생각했다. wifi에서 cellular로 넘어갈때 발생하는 문제일까...? 아무튼 하단 코드는 네트워크 상태를 String으로 반환해 주는 코드이다. @SuppressLint("MissingPermission") fun getNetworkType(context: Context): String { val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as Connectivit..
[Android: Basic] Spinner Dropdown DropDown Spinner 아래의 이미지 처럼 터치했을 때, 값을 사용자가 선택할 수 있도록 목록 형태로 펼쳐지는 것을 드롭다운(Drowdown) 이라고 한다. 안드로이드에서 드롭다운은 스피너(Spinner) 를 이용해 구현할 수 있다. 이번 포스팅에서는 스피너를 구현하는 방법과 커스텀하는 방법에 대해 알아보겠다. ViewBinding 환경을 고려하고 작성된 글이다. 완성본 아래 과정을 통해 완성될 결과물을 먼저 살펴보자. 간단하게 드롭다운에서 아이템을 선택하면 그에 따라 텍스트가 바뀌는 예제다. 코드 전문은 아래 깃허브 저장소에서 확인 가능하다. 깃허브 링크 💻 Code ‣ Layout resource dropDownWidth와 dropDownVertivalOffset에 대해서 알아보겠다. drop..
[Android: CS] Dalvik vs ART ART(Anroid Run Time)는 Android 4.4(Api 19)에서 처음으로 등장했으며, 해당 버전에서는 Dalvik과 함께 선택적으로 사용이 가능했다. 하지만 Android 5.0(Api 21) 이상 버전에서는 ART가 기본 런타임 환경으로 자리잡았다. 두가지 방식의 가장 큰 차이점은 컴파일 방식이다. Dalvik은 JIT(Just-In-Time) 방식을 사용하고, ART는 AOT(Ahead-Of-Time) 방식을 사용(Android 7부터는 AOT와 JIT의 조합)한다. 두 방식을 간략하게 살펴보면 다음과 같다. JIT(Jus-In-Time) 앱 실행 시 컴파일 설치 시 컴파일을 하지 않기 때문에 AOT보다 설치 속도가 빠르다. 실행 시 컴파일을 하기 때문에 AOT에 비해 실행 속도가 느림..
안드로이드 인터넷 연결상태 체크: HttpURLConnection 객체 이용 들어가며.. 글로벌 서비스를 담당하다보면 네트워크 관련 이슈를 생각보다 많이 접한다. 이동 중 인증되지 않은 인터넷에 자동 연결되서 갑자기 연결이 끊어진다던지.. Api 통신 도중에 갑자기 기지국 범위를 벗어나 끊어진다던지..(몇 초 안걸릴텐데 이게 죽) 이런 종류의 네트워크 이슈를 다루다보니 연결 상태를 체크 해 주는 코드가 필요함을 느꼈고, 해당 기능을 모듈 형식으로 만들어서 사용하기로 했다. 🌐 HttpURLConnection HttpURLConnection? val url = URL("http://example.com") val con = url.openConnection() as HttpURLConnection con.requestMethod = "GET" val responseCode = co..