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
반응형
'Kotlin > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 다리를 지나는 트럭 - kotlin (0) | 2023.04.18 |
---|---|
[프로그래머스] 뒤에 있는 큰 수 찾기 - kotlin (0) | 2023.04.17 |
[프로그래머스] 모음 사전 - kotlin (0) | 2023.04.15 |
[프로그래머스] 피로도 - kotlin (0) | 2023.04.14 |
[프로그래머스] 할인 행사 - kotlin (0) | 2023.04.14 |