-
2개 이하로 다른 비트프로그래머스 2022. 10. 31. 22:36728x90
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