반응형
밑의 링크는 프로그래머스에서의 문제 링크입니다.
파이썬 코드와 결과입니다.
# 자연수 n이 매개변수로 주어집니다.
# n은 1,000,000 이하의 자연수입니다.
def solution(n):
# n을 2진수로 바꿨을 때, 1의 개수를 저장하는 변수를 선언합니다.
bin_n_one_cnt = bin(n).count('1')
# 다음 큰 숫자를 찾을 때까지 반복합니다.
while True:
# n에 1을 더합니다.
n += 1
# 현재 n을 2진수로 바꿨을 때의 1의 개수가
# 처음 n을 2진수로 바꿨을 때의 1의 개수와 같다면
if bin(n).count('1') == bin_n_one_cnt:
# 현재 n을 반환합니다.
return n
다음 큰 숫자를 쉽게 구하기 위해
맨 처음 n을 2진수로 바꿨을 때의 1의 개수와
다음 큰 숫자를 2진수로 바꿨을 때의 1의 개수 사이에서 뭔가 특정한 패턴이 있는지 생각해봤는데
바로 떠오르는 패턴을 찾지 못했습니다.
그래서 위의 코드처럼 그냥 n에서부터 1을 계속 더해가면서 2진수에서 1의 개수를 찾아 비교하는 코드를 짰는데
다른 고수분들의 코드들 중에서 더 쉽게 짠 코드가 있는지도 찾아봐야겠습니다.
※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.
※ 더 효율적이고 빠른 정답을 환영합니다.
반응형
댓글