ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2개 이하로 다른 비트
    프로그래머스 2022. 10. 31. 22:36
    728x90
    class Solution {
        fun solution(numbers: LongArray): LongArray {
            var answer: LongArray = longArrayOf()
            for(num in numbers){
                var number = "0" + num.toString(2)
                var count = 1L
                for(i in number.length-1 downTo 0){
                    if(number[i] != '0'){
                        count *= 2L
                    } else {
                        if(count > 1L){
                            answer += num + count/2L
                        } else answer += num + count 
                        break
                    }
                }
            }
            return answer
        }
    }

     

    해당 문제는 숫자를 이진법으로 바꾼 후 0 이 처음 나온 자리에 따라 2^N 의 값을 더해주면 답이 나오는 문제 였습니다.

    그전에 하나하나 비교하는 코드를 작성 하였었으나, 그렇게 할 경우 최대 입력값인 10^15 가 입력 될 경우 최상위 비트쪽에 문제가 생겨 시간 초과로 인하여 통과하지 못하여 처음에 말한것 처럼 2^N 의 값을 더해주는 코드를 작성하여, 통과 완료한 문제 입니다.

    '프로그래머스' 카테고리의 다른 글

    햄버거 만들기  (0) 2022.11.11
    [프로그래머스][Kotlin]옹알이(2)  (0) 2022.11.10
    연속 부분 수열 합의 개수  (0) 2022.10.27
    H-Index  (0) 2022.09.27
    위장  (0) 2022.09.27
Designed by Tistory.