Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.2 2개 이하로 다른 비트 [Python, 파이썬] 본문
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/77885
- 🔑 2진수로 변환해서 자리 바꾸기
- 짝수라면 그 숫자에 +1을 해서 정답에 추가한다.
- 홀수라면 숫자를 2진수로 바꾸고 50자리까지 남는 자리에 0을 채워준다. (10^15를 2진수로 바꾸면 50자리까지 나와서)
- 변환된 2진수를 역순으로 순회하면서 처음 0을 만나면 1로 바꿔주고, 바로 오른쪽 값은 0으로 바꿔준다.
- 7 일 때 2진수로 바꾸면 000...0111
- 처음 0으로 만났을 때 값을 바꿔주면 000...1011
- 이렇게 자리를 바꾼 2진수를 다시 10진수로 변환해서 정답에 추가하면 끝 ✨
def solution(numbers):
answer = []
for n in numbers:
if n % 2 == 0: # 짝수면
answer.append(n+1) # 이 값에 +1
else:
bit = list(bin(n)[2:].zfill(50)) # 50자리까지 0으로 채움
for i in range(len(bit)-1, -1, -1): # 역순 순회
if bit[i] == '0': # 0만나면
bit[i] = '1' # 자리 바꾸기
bit[i+1] = '0' # 자리 바꾸기
break
answer.append(int("".join(bit), 2)) # 2진수를 10진수로 변환
return answer
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.2 무인도 여행 [Python, 파이썬] (0) | 2024.03.15 |
---|---|
[프로그래머스] Lv.3 베스트 앨범 [Python, 파이썬] (0) | 2024.02.23 |
[프로그래머스] Lv.3 단속 카메라 [Python, 파이썬] (0) | 2023.12.27 |
[프로그래머스] Lv.3 숫자 게임 [Python, 파이썬] (0) | 2023.12.27 |
[프로그래머스] Lv.2 택배상자 [Python, 파이썬] (0) | 2023.12.21 |
Comments