Kotlin 126

[Jetpack Compose] BackHandler : 뒤로가기 감지

어플을 사용하다보면 뒤로가기를 눌렀을 때 이런 창이 뜰때가 있다. 이건 어떻게 하는걸까? 뒤로가기를 감지하고, 특정 동작을 작동시켜야 한다. 그렇기때문에 사용하는 것이 BackHandler이다. @Composable fun BackOnPressed() { val context = LocalContext.current var backPressedTime = 0L BackHandler(enabled = true) { if(System.currentTimeMillis() - backPressedTime

[Kotlin] Programmers Lv. 1 자연수 뒤집어 배열로 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/12932 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Code class Solution { fun solution(n: Long): IntArray = n.toString() .reversed() .map { it.digitToInt() }.toIntArray() } 처음에는 입력받은 값을 각각 분리해야한다 라는 생각이 너무 커서 split을 썼었다. split("")을 쓰니까 ""값이 두개가 생겼고, 이를 없애기 위해 filter{it!=""}을..

Programmers/Lv. 1 2023.08.09

[Kotlin] Programmers Lv. 1 평균 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/12944 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Code class Solution { //fun solution(arr: IntArray): Double = arr.sum()/arr.size.toDouble() fun solution(arr: IntArray): Double = arr.average() } 당연히 평균이라고 해서 합을 구하고, 갯수로 나누는 그런 방식을 생각했다. 그래서 sum()과 size를 사용해서 결과를 만들었다. 그런데..

Programmers/Lv. 1 2023.08.08

[Kotlin] Programmers Lv. 1 짝수와 홀수

https://school.programmers.co.kr/learn/courses/30/lessons/12937 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Code class Solution { fun solution(num: Int): String = if( num % 2 == 0 ) "Even" else "Odd" } 짝 홀 구하는거 정도야 뭐.... 2로 나누고 나머지 확인하면 된다. 이게 왜 Lv. 1....? Lv. 0인거 같은데...

Programmers/Lv. 1 2023.08.07

[Kotlin] Programmers Lv. 1 약수의 합

https://school.programmers.co.kr/learn/courses/30/lessons/12928 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Code class Solution { //fun solution(n: Int): Int = (1 .. n).filter { n % it == 0 }.sum() fun solution(n: Int): Int{ var set = hashSetOf() for (i in 1 .. sqrt(n.toDouble()).toInt()){ if (n % i == 0) { set.add(i) set.add(n /..

Programmers/Lv. 1 2023.08.06

[Kotlin] 백준 4803번 : 트리 <Gold 4>

https://www.acmicpc.net/problem/4803 4803번: 트리 입력으로 주어진 그래프에 트리가 없다면 "No trees."를, 한 개라면 "There is one tree."를, T개(T > 1)라면 "A forest of T trees."를 테스트 케이스 번호와 함께 출력한다. www.acmicpc.net Code import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.* fun main(args: Array) = with(BufferedReader(InputStreamReader(..

Bakejoon/Gold 2023.08.05

[Kotlin] StringBuilder

StringBuilder가 뭘까? StringBuilder 는 코틀린에서 동적으로 문자열을 조작할 수 있는 객체다. 그럼 다른건 동적이지 않나? String의 경우 연산 방식이 다르다. var text = "abc" text += "def" println(text) //abcdef 이게 우리가 아는 일반적인 방식일거다. 봐라 "abc"에 "def"가 추가돼서 동적으로 "abcdef"가 되지 않았나! 라고 생각할 수도 있다. 하지만 실상은 다르다 text -> "abc" 위와 같은 모양으로 text라는 변수가 "abc"라는 값을 가리키고(담고) 있었다고 가정하자. "def"를 더할 경우 아래와 같은 모양이 된다. "abc" text -> "abcdef" 이게 뭘 의미할까. text라는 변수에 "def"를 ..

[Kotlin] 백준 11725번 : 트리의 부모 찾기 <Silver 2>

https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net Code import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.LinkedList fun main(args: Array) = with(BufferedReader(InputStreamReader(System.`in`))) { val bw = BufferedWri..

Bakejoon/Silver 2023.08.03

[Jetpack Compose] Coil - 이미지 로딩 라이브러리

코일이 뭘까? Coil은 Kotlin Coroutines로 만들어진 Android 백엔드 이미지 로딩 라이브러리로, Cououtine Image Loader의 약자이다. 근데 여기서 궁금한게 하나 생길 수 있다. 안드로이드에서 이미지를 로딩하는 라이브러리로 Glide라는 검증된 라이브러리가 있는데 왜 Coil을 쓸까?? 공식문서의 장점을 보자. 빠르다: Coil은 메모리와 디스크의 캐싱, 메모리의 이미지 다운 샘플링, Bitmap 재사용, 일시정지/취소의 자동화 등등 수 많은 최적화 작업을 수행합니다. 가볍다: Coil은 최대 2000개의 method들을 APK에 추가합니다(이미 OkHttp와 Coroutines을 사용중인 앱에 한하여), 이는 Picasso 비슷한 수준이며 Glide와 Fresco보다는..

[Kotlin] 백준 2606번 : 바이러스 <Silver 3>

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net Code import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.* fun main(args: Array) = with(BufferedReader(InputStreamReader(System.`in`))..

Bakejoon/Silver 2023.07.29