코딩테스트 연습 - 다음 큰 숫자 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 다음 큰 숫자
자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니
programmers.co.kr
풀이)
알고리즘)
- n을 이진수로 변환
- 이진수 n에 대하여 1의 개수를 카운팅
- n++ (위와 같은 과정을 반복하며 n의 1의 개수가 처음에 카운팅한 1의 개수와 처음으로 같아질 때 n리턴)
코드)
def solution(n):
answer = 0
b = format(n,'b') # n을 이진수로 변환
str_b = str(b) # 이진수n을 문자형으로 변환
cnt = 0
for i in str_b: # 이진수 n에 포함된 1의 갯수 카운팅
if i == "1":
cnt += 1
while True:
n += 1 # n값을 1씩 증가시키며 조건에 맞는 result값 구하기
b = format(n, 'b')
str_b = str(b)
count = 0
for i in str_b:
if i == "1":
count += 1
if(cnt == count):
answer = n
break
return answer