honey_pot
[Python] 2개 이하로 다른 비트 본문
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