[프로그래머스] 2개 이하로 다른 비트

yewon Lee·2023년 8월 10일
0

😎코딩테스트 연습>월간 코드 챌린지 시즌2>2개 이하로 다른 비트


📘 문제풀이

  1. 짝수일 때
    1만 더해주면 됨
  2. 홀수일 때
    이진수 비트가 전부 1일때는
    EX) 111 -> 1011, 11 -> 101
    아니라면 비트가 01인 부분을 10으로 바꾸어 줌
   def solution(numbers):
   answer = []
   for n in numbers:
       if n%2 == 0:
           answer.append(n+1)
       
       else:        
           b = format(n, 'b')
           s = int('1'*len(b), 2)
           if n & s == s:                
               k = '1' + '0'*(len(b)-1)
               answer.append(n + int(k,2))
           
           else:
               for i in range(len(b)-1, 0, -1):
                   if b[i] == '1' and b[i-1] == '0':
                       b =  b[:i-1] + '10' + b[i+1:]
                       answer.append(int(b,2))
                       break

   return answer
profile
시작

1개의 댓글

comment-user-thumbnail
2023년 8월 10일

유익한 글이었습니다.

답글 달기