알고리즘
[프로그래머스] 다음 큰 숫자 | bin 을 통해 이진수로 변경하기
wjdwwidz
2024. 11. 10. 17:08
https://school.programmers.co.kr/learn/courses/30/lessons/12911
def solution(n):
target =list(bin(n)[2:]).count("1")
cnt = 0
next = n
while (target != cnt) :
next += 1
cnt = list(bin(next)[2:]).count("1")
if(target==cnt) :
return next
파이썬에서 십진수<-> 이진수 사이 변형은 bin 이라는 함수를 통해 이루어지며
bi+숫자 형태로 출력되므로 [2:] 를 통해 이를 제거해주어야 한다.
=> 문제를 풀 때 갯수가 같고, 00011 등으로 출력 되는 수를 예외로 두어야 하나 고민했는데, 이진수로의 변형 과정 중에서 앞에 오는 0 은 결국 없는 수라고 봐도 무방하므로 상관이 없었다.
=> 0의 갯수가 아닌 1의 갯수를 찾아야 하므로 예외 케이스는 생각하지 않아도 됐다.