Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 안드로이드 유닛테스트란
- 안드로이드 라이선스 종류
- rxjava disposable
- android retrofit login
- 클래스
- 2022 플러터 설치
- ar vr 차이
- 안드로이드 os 구조
- 스택 자바 코드
- 스택 큐 차이
- 안드로이드 유닛 테스트 예시
- 안드로이드 레트로핏 crud
- 플러터 설치 2022
- 객체
- 멤버변수
- 서비스 vs 쓰레드
- 2022 플러터 안드로이드 스튜디오
- rxjava cold observable
- 자바 다형성
- ANR이란
- jvm이란
- 안드로이드 레트로핏 사용법
- 서비스 쓰레드 차이
- 큐 자바 코드
- 안드로이드 유닛 테스트
- jvm 작동 원리
- 안드로이드 라이선스
- android ar 개발
- Rxjava Observable
- rxjava hot observable
Archives
- Today
- Total
나만을 위한 블로그
[Algorithm] 프로그래머스 - 배열의 길이를 2의 거듭제곱으로 만들기 (Kotlin) 본문
728x90
반응형
정수 배열 arr이 매개변수로 주어진다. arr의 길이가 2의 정수 거듭제곱이 되도록 arr 뒤에 정수 0을 추가하려고 한다. arr에 최소한의 개수로 0을 추가한 배열을 리턴하는 함수를 완성하라
arr의 길이가 2의 거듭제곱이 되도록 하는 덴 성공했지만 남은 자리에 0을 추가하는 방법을 알아내지 못했다.
아래와 같이 풀면 된다.
class Solution {
fun solution(arr: IntArray): IntArray {
val currentLength = arr.size
var targetLength = 1
while (targetLength < currentLength) {
targetLength *= 2
}
val result = arr.copyOf(targetLength)
return result
}
}
왜 이게 되는가? 정답은 copyOf()의 작동 방식에 있었다.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/copy-of.html
원본 배열의 복사본인 새 배열을 리턴하며 지정된 newSize로 크기가 조정된다. 복사본은 잘리거나 필요한 경우 0으로 끝을 채운다
- newSize가 원본 크기보다 작으면 복사되는 배열이 newSize로 잘린다
- newSize가 원본 크기보다 크면 복사되는 배열의 남은 요소들은 0으로 채워진다
fun ByteArray.copyOf(newSize: Int): ByteArray
fun ShortArray.copyOf(newSize: Int): ShortArray
fun IntArray.copyOf(newSize: Int): IntArray
fun LongArray.copyOf(newSize: Int): LongArray
fun FloatArray.copyOf(newSize: Int): FloatArray
fun DoubleArray.copyOf(newSize: Int): DoubleArray
// 예시
val array = intArrayOf(1, 2, 3)
val arrayCopyPadded = array.copyOf(5)
println(arrayCopyPadded.contentToString()) // [1, 2, 3, 0, 0]
val arrayCopyTruncated = array.copyOf(2)
println(arrayCopyTruncated.contentToString()) // [1, 2]
BooleanArray의 경우 0 대신 false, CharArray는 \u0000, Array는 null로 채워진다.
그래서 while문 탈출 후 arr의 길이를 2의 거듭제곱 수(targetLength)와 맞추기 위해 남는 공간에 0이 할당되는 것이다.
반응형
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[Algorithm] 프로그래머스 - 문자열 묶기 (Kotlin) (0) | 2024.06.28 |
---|---|
[Algorithm] 프로그래머스 - 배열 비교하기 (Kotlin) (0) | 2024.06.28 |
[Algorithm] 프로그래머스 - 무작위로 K개의 수 뽑기 (Kotlin) (0) | 2024.06.04 |
[Algorithm] 프로그래머스 - 배열 만들기 6 (Kotlin) (0) | 2024.06.04 |
[Algorithm] 프로그래머스 - 빈 배열에 추가, 삭제하기 (Kotlin) (0) | 2024.06.04 |
Comments