https://school.programmers.co.kr/learn/courses/30/lessons/77885
1. 해결방법
numbers를 for문 돌리서
num이 짝수이면, +1만 해주면 된다.
num이 홀수이면, bin[2:]앞에 '0'을 추가하고 rfind() 메서드를 이용하여 0의 인덱스 위치를 구하고 0을 1로 갱신해준다.
그리고 0의 위치에서 +1에 위치한 인덱스 값을 0으로 바꿔준다
2. 정답코드
def solution(numbers):
answer = []
for num in numbers:
if num % 2 == 0:
# 짝수
new_num = int(bin(num)[2:]) + 1
answer.append(int('0b' + str(new_num), 2))
else:
# 홀수
new_num = '0' + str(int(bin(num)[2:]))
idx = new_num.rfind('0')
new_num = list(new_num)
new_num[idx], new_num[idx + 1] = '1', '0'
answer.append(int('0b' + ''.join(new_num), 2))
return answer
본인 기준에선 어려웠다.
로직 자체는 이해가지만 홀수일 때, 뇌사가 와서 해결하지 못했던 문제이다.
rfind() 메서드를 알게되었고, 자연스레 find() 메서드도 이해를 할 수 있었던 문제이다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.2 쿼드압축 후 개수 세기 (0) | 2022.10.08 |
---|---|
[프로그래머스] Lv.2 소수 찾기 (1) | 2022.10.03 |
[프로그래머스] Lv.2 모음사전 (0) | 2022.09.30 |
[프로그래머스] Lv.2 방문 길이 (0) | 2022.09.29 |
[프로그래머스] Lv.2 땅따먹기 (0) | 2022.09.28 |