프로그래머스 2개 이하로 다른 비트 - java


프로그래머스 2개 이하로 다른 비트 - java

(야매) 주어진 수에 1, 2, 4, 8, 16... 을 더해서 (1비트씩 플립해보면서) 다른 비트가 2개 이하가 되는지 체크해본다. 알고리즘상 최적의 알고리즘은 아니다. 최적의 알고리즘은 두 경우를 생각하는 알고리즘이다. 1. 짝수 20의 자리만 플립하면 된다. 2. 홀수 20의 자리부터 왼쪽으로 탐색해가면서 가장 먼저 0이 발견되면 그 0을 1로 바꾸고 그 오른쪽 1을 0으로 바꾼다. 예) 10101101111 답) 10101110111 class Solution { public long[] solution(long[] numbers) { long[] answer = new long[numbers.length]; /** 10 2 11 3 0111 7 1000 8 1001 9 1010 10 1011 11 010101 21 010110 22 */ for (int i = 0 ; i < numbers.length ; i++) { long num = numbers[i]; String bi...



원문링크 : 프로그래머스 2개 이하로 다른 비트 - java