Kotlin/코딩테스트
[프로그래머스] 2개 이하로 다른 비트 - kotlin
깨노비
2023. 4. 17. 00:16
728x90
반응형
문제 설명
양의 정수 x에 대한 함수 f(x)를 다음과 같이 정의합니다.
x보다 크고 x와 비트가 1~2개 다른 수들 중에서 제일 작은 수
예를 들어,
f(2) = 3 입니다. 다음 표와 같이 2보다 큰 수들 중에서 비트가 다른 지점이 2개 이하이면서 제일 작은 수가 3이기 때문입니다.
class Solution {
fun solution(numbers: LongArray): LongArray {
var answer = arrayListOf<Long>()
for (number in numbers) {
val str: String = number.toString(2)
val lastZero: Int = str.indexOfLast { it == '0' }
when (lastZero) {
(str.length - 1) -> answer.add(number + 1)
-1 -> {
val incStr = "10" + str.substring(1)
answer.add(incStr.toLong(2))
}
else -> {
val incStr = str.substring(0, lastZero) + "10" + str.substring(lastZero + 2)
answer.add(incStr.toLong(2))
}
}
}
return answer.toLongArray()
}
}
728x90
반응형