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의 갯수를 찾아야 하므로 예외 케이스는 생각하지 않아도 됐다.
'알고리즘' 카테고리의 다른 글
[백준] 애너그램 만들기 | remove() vs pop() (0) | 2024.11.10 |
---|---|
[백준] 모비스 | and (0) | 2024.11.10 |
[softeer] 8단 변속기 JAVA | 배열 초기화, else if (0) | 2024.11.02 |
[백준] 수열 JAVA (0) | 2024.11.01 |
[softeer] 연탄의 크기 JAVA | ArrayList vs 배열 (int[]), Math.max(A,B) (0) | 2024.11.01 |