Kotlin

프로그래머스

n번째 원소부터 코틀린(Kotlin)

오늘 문제는 리스트를 자르는 부분이 필요해서 한 번 풀어보게 되었다. 문제 문제를 읽어보면 주의해야할 점이 하나 있었다. 바로 인덱스에 관련한 것인데 입출력 예시에서 보면 n값이 3일 때, num_list의 2번 인덱스에서부터 자르는 모습을 볼 수 있었다. 풀이 풀이 코드는 한 줄로 적었기 때문에 읽을 때 무리가 없을 것이라 생각한다. 주어진 배열을 리스트로 변경한 뒤, 주어진 인덱스에 맞춰 자르고 다시 배열로 형변환을 해주었다. 실행 결과

프로그래머스

간단한 논리 연산 코틀린(Kotlin)

이번 문제는 제목에 충실한 문제다. 문제를 먼저 살펴보자. 문제 연산자에 대한 진리표를 보면 아랫 화살표는 OR 연산으로 보이고, 윗 화살표는 AND 연산으로 보인다. 풀이 결국 문제에서 주어진 네 개의 변수값을 원하는 식에 대입해주면 되는데 먼저 x1, x2의 결과가 true일 때 x3, x4의 연산값이 의미가 있고 false인 경우, 무조건 false로 리턴되어야 한다. 실행 결과

프로그래머스

문자열 정수의 합 코틀린(Kotlin)

이 문제는 내 블로그에 꾸준히 등장하는 패턴이다. 문자형을 정수형으로 변환하는 게 핵심인데, 코틀린으로 벌써 이 유형을 4번째 풀고 있다. 하지만, 귀신같이 오늘도 헷갈려서 내 블로그를 뒤적였다. 문제를 다같이 보자. 문제 반복문으로 문자열 각 인덱스를 정수형으로 변환해 모두 더하면 끝이다. 풀이 다시 한 번 나에게 상기시키는 메소드지만, Character를 Int로 바꿀 때는 웬만한 상황에서 digitToInt()를 사용하면 된다. 웬만한 상황이라 적은 이유는 코틀린 버전이 낮은 상황(1.5 아래)에선 Character.getNumericValue를 사용해야하기 때문이다. 실행 결과

Language/Kotlin

Suspend function 짧은 소개

suspend function은 다른 suspend function이나 Coroutine에서만 호출될 수 있다. 일반적인 코드에서 suspend function을 호출하려면 새 코루틴을 시작해야한다. 이렇게 만들어진 코루틴에서는 suspend function과 일반 함수를 모두 호출할 수 있다. suspend fun someMethod(delay: Long) { println("starts method") delay(delay) println("ends method") } 위 함수에서 suspend function이 실제로 suspend될 수 있는 지점은 어디일까? 바로 delay() 부분인데 더 길고 복잡한 suspend function이 있다면 그 함수가 포함하고 있는 모든 suspend funct..

프로그래머스

원하는 문자열 찾기 코틀린(Kotlin)

이번에는 코틀린으로 정말 간결하게 풀 수 있는 문제가 있어서 풀어보았다. 문제 myString에 pat이 대소문자 상관없이 포함되기만 하면 1 아니면 0을 리턴하면 된다. 입출력 예시에서 길이를 논하는 부분이 있는데 굳이 필요없는 부분이라 생각한다. 풀이 최대한 짧게 쓰려고 했다면 if-else문의 중괄호 조차 생략해버릴 수 있었는데 그렇게 되면 가독성이 떨어져 보여 중괄호를 빼지 않고 써보았다. 나는 모두 소문자로 변환하여 비교했지만 반대로 모두 대문자로 변환하여 비교해도 무관하다.

프로그래머스

홀짝에 따라 다른 값 반환하기 코틀린(Kotlin)

약 한 달만의 문제 풀이 시간이 돌아왔다. 긴 말 할 것 없이 바로 문제를 확인해보자. 문제 입력값이 홀수이면 그 이하 홀수값을 모두 더해 리턴하고, 짝수이면 그 이하 짝수들의 제곱값을 모두 더해 리턴한다. 풀이 반복문을 통해 수를 더할 때 step을 설정해 주었는데 홀짝 여부에 따라 시작 숫자를 다르게 설정했다. 실행 결과

프로그래머스

두 수의 연산값 비교하기 코틀린(Kotlin)

정말 오랜만에 프로그래머스에 접속해보았다. 머리가 많이 굳었다는 게 실감되었다. 아날로그에 빠져 살아서 그랬나 싶기도 하다. 이제 문제풀러 가보자. 문제 일단, 두 수가 연산자를 거치면 문자열마냥 합쳐지는 것을 볼 수 있다. 따라서, 두 Int형 파라미터를 문자열로 붙였다. 만들어진 문자열을 다시 숫자로 바꾸어 a*b*2의 결과와 비교했다. 풀이 실행 결과

Android

Android RecyclerView ItemDecoration in Kotlin

내가 이 클래스를 사용하게 된 이유 내가 사용하던 RecyclerView에는 각 아이템 하단에 구분선(Divider)이 있다. 이전에는 해당 아이템을 구성하는 xml에 MaterialDivider를 배치했었다. 새로운 요구사항이 들어오면서 구조 변경의 필요성을 느끼게 되었다. 새로운 요구사항은 마지막 아이템은 구분선이 가로 전체를 차지하도록 변경하는 것이었다. 새로운 요구사항에 따른 시도 RecyclerView Adapter의 onBindViewHolder에서 마지막 아이템을 확인해서 AttributeSet을 다시 할당해주었다. 나름 그럴싸한 로직이라 생각했다.(내 기준) 그 결과, 알 수 없는 버그들이 밀려들어왔다. 처음 adapter를 할당했을 땐 마지막 아이템에만 해당 AttributSet이 적용되..

프로그래머스

문자열 겹쳐쓰기 코틀린(Kotlin)

오늘도 천천히 예열하는 느낌의 문제를 풀어보았다. (생각할 게 많아져서 머리를 많이 쓰기 싫었다 ㅋㅋㅋㅋ) 문제 문제를 보고 기존 문자열(my_string)에서 대체되기 시작하는 인덱스가 s이고 파라미터로 주어진 overwrite_string의 length 이후의 인덱스는 대체되지 않는다. 그래서 substring 함수를 사용해 기존 문자열의 대체되지 않는 부분을 구해주었고 대체되는 부분은 주어진 파라미터를 그대로 사용했다. 풀이 리턴될 answer 변수의 길이가 길어져 보기 힘들 수 있지만 이 문자열을 만드는 변수들은 위에서 말했던 3가지이다. overwrite_string에 의해 대체되지 않는 앞, 뒤 부분, 그리고 대체되는 부분. 끝이다.

프로그래머스

조건 문자열 코틀린(Kotlin)

오랜만에 안드로이드 글을 연재하다 공부 주제를 못잡고 가벼운 문제를 들고 왔다. 문제 가장 먼저 고민했던 것은 주어지는 두 개의 문자열을 어떻게 연산자로 변환할까? 였다. 하지만, 이 문제에선 총 4가지 케이스만 정의하면 되므로 when을 사용해 풀어보았다. 풀이 주어진 두 파라미터를 붙인 후 when에서 4가지 케이스를 분류했다. 리턴될 answer 변수에 if else 조건식을 사용해 곧바로 변수에 값을 대입했다. 물론 케이스가 더 많아지면 when의 케이스가 많아지고 중괄호 안쪽이 뚱뚱해질 것이다.

BonusTrack02.dev
'Kotlin' 태그의 글 목록 (3 Page)