일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 스택 큐 차이
- 2022 플러터 안드로이드 스튜디오
- 자바 다형성
- ar vr 차이
- 플러터 설치 2022
- 큐 자바 코드
- 서비스 vs 쓰레드
- Rxjava Observable
- 객체
- 안드로이드 라이선스 종류
- 안드로이드 레트로핏 사용법
- jvm 작동 원리
- android retrofit login
- android ar 개발
- 안드로이드 유닛테스트란
- 스택 자바 코드
- 안드로이드 레트로핏 crud
- ANR이란
- rxjava disposable
- 서비스 쓰레드 차이
- rxjava hot observable
- rxjava cold observable
- 클래스
- 안드로이드 os 구조
- 2022 플러터 설치
- jvm이란
- 안드로이드 유닛 테스트 예시
- 멤버변수
- 안드로이드 라이선스
- 안드로이드 유닛 테스트
- Today
- Total
나만을 위한 블로그
[Algorithm] 프로그래머스 - 짝수는 싫어요 (Kotlin) 본문
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 리턴하도록
solution()을 완성하라
문제의 정답 코드에는 solution()이 IntArray를 리턴하도록 되어 있다. 이것에 맞춰서 작성한다면 아래와 같이 할 수 있다.
fun solution(n: Int): IntArray {
val result = arrayListOf<Int>()
for (i in 1 .. n) {
if (i % 2 != 0) {
result.add(i)
}
}
return result.toIntArray()
}
n 이하의 홀수라고 했기 때문에 n도 포함해야 한다. 그래서 for문의 조건에 intRange를 리턴하는 ".."을 썼다. until은 단어 자체의 의미처럼 마지막 숫자를 제외하는 intRange를 리턴하기 때문에 사용하면 안 된다.
그리고 for문 안에서 짝수인지 확인한 다음 홀수인 경우에만 ArrayList에 담고, 리턴할 때는 toIntArray()를 써서 IntArray로 변환해서 리턴하면 된다.
다른 사람들은 어떻게 풀었는지 확인해 봤다.
class Solution {
fun solution(n: Int) = (0..n).filter { it % 2 == 1 }.toIntArray()
}
위에서 ".."은 intRange라고 했다. 코틀린 공식문서에서도 볼 수 있듯 intRange는 이름 그대로 정수들로 이뤄진 범위를 말한다. 난 정수로 이뤄진 하나의 그룹이라고 이해하려고 한다.
이 intRange는 닫힌 구간(Closed range)이다. 코틀린 공식문서에선 닫힌 구간에 대해 아래와 같이 설명하고 있다.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/-closed-range/
하한과 상한이 모두 범위에 포함되는 값의 범위(숫자 또는 문자)를 나타낸다
어디부터 어디까지라고 구간을 정했기 때문에 나는 시작값, 끝값을 모두 알 수 있다. 공식문서의 코드 스니펫은 아래와 같다.
if (i in 1..4) { // equivalent of i >= 1 && i <= 4
print(i)
}
그리고 이렇게 만들어진 intRange에는 filter {}를 써서 내가 원하는 값만 가져오도록 처리할 수 있다.
filter {} 안에 홀짝을 판별하는 로직을 넣고, intArray()로 변환한 코드다. 내가 짠 코드도 정답 처리는 됐지만 더 가독성 좋고 간결하게 짜려면 어떻게 할지 고민하는 것이 어렵다고 느꼈다.
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[Algorithm] 프로그래머스 - 피자 나눠 먹기(3) (Kotlin) (0) | 2022.12.21 |
---|---|
[Algorithm] 프로그래머스 - 피자 나눠 먹기(2) (Kotlin) (0) | 2022.12.21 |
[Algorithm] 프로그래머스 - 피자 나눠 먹기(1) (Kotlin) (0) | 2022.12.21 |
[Algorithm] 프로그래머스 - 최빈값 구하기 (Kotlin) (0) | 2022.12.20 |
[Algorithm] 프로그래머스 - 분수의 덧셈 (Kotlin) (0) | 2022.12.16 |