honey_pot

[Python] 2개 이하로 다른 비트 본문

문제 풀이

[Python] 2개 이하로 다른 비트

_tera_ 2022. 9. 21. 13:39

https://school.programmers.co.kr/learn/courses/30/lessons/77885


2진법답게 2의 배수는 규칙이 있다

이진법으로 변경한 후에 맨 뒷자리를 1로 바꿔도 되고 그냥 10진수 숫자에 1을 더해도 같은 원리다

홀수인 경우 11 정도까지 직접 써보면 오른쪽에서 맨 처음 0이 나오는 위치를 1로 바꾸고 뒤의 숫자를 0으로 바꿔주면 조건에 맞는 숫자가 된다.

개인적으로 형변환을 반복하거나 형변환한 걸 다른 클래스형의 함수를 쓰려고 처리해주는 걸 안 좋아하는데 고쳐야겠다... 그렇게 하기 싫어서 삽질하다가 우주로 갈뻔함

find 함수를 쓰려다가 rfind 함수를 발견해서 역시 파이썬은 일단 함수가 있구나..를 새삼 느끼게 됨

 

1
2
3
4
5
6
7
8
9
10
11
12
def solution(numbers):
    answer = []
    for n in numbers:
        if n % 2 == 0:
            answer.append(n+1)
            continue
        b = list('0'+ bin(n)[2:])
        idx = ''.join(b).rfind('0')
        b[idx] = '1'
        b[idx+1= '0'
        answer.append(int(''.join(b),2))
    return answer
cs

'문제 풀이' 카테고리의 다른 글

[Python] 줄 서는 방법  (1) 2022.09.21
[Python] 쿼드압축 후 개수 세기  (0) 2022.09.21
[Python] 양궁대회  (1) 2022.09.20
[Python] 점프와 순간 이동  (0) 2022.09.20
[Python] [3차] 압축  (0) 2022.09.20
Comments