728x90
반응형
문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/77885
풀이:
def solution(numbers):
res = []
for number in numbers:
number = int(number)
if number % 2 == 0:
res.append(number+1)
else:
now = '0' + bin(number)[2:]
index = now.rfind("0")
now_list = list(now)
now_list[index] = "1"
now_list[index+1] = "0"
res.append(int("".join(now_list),2))
return res
7인 경우 2진법으로 111 인데
0111으로 해서 하면 1011이 가장 작은 수이므로
앞에 0을 추가해줘서 계산하는게 좋음
def solution(numbers):
answer = []
for idx, val in enumerate(numbers):
answer.append(((val ^ (val+1)) >> 2) +val +1)
return answer
# 이제는 그러려니함
^ 는 xor 연산자
둘 중 하나만 참일 때 만족
반응형
댓글