자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.
- 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.
- 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.
- 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.
예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.
자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.
- 제한사항
- n 은 1,000,000 이하의 자연수 입니다.
- 입출력 예
n result 78 83 15 23
- input 숫자를 이진수로 바꿔서 그걸 배열에 저장한 다음 1의 갯수를 파악한다.
- 그리고 input 보다 큰 수부터 탐색해서 1의 갯수가 같으면 break
def binary(number) : binary_list = [] # 문자열 인덱스 0, 1 제외하고 그 다음 2부터 1의 갯수 체크? b_n = str(bin(number)) for i in range(2, len(b_n)): binary_list.append(b_n[i]) return binary_list def solution(n): answer = n n_list = binary(n) n_count = n_list.count('1') while True : answer += 1 a_list = binary(answer) if n_count == a_list.count('1') : break return answer
- 간단한 문제여서 한 큐에 통과했다.
- 요즘 싸질러놓은 판들이 많아서 이게 옳은 것인가 싶지만 이렇게해야 공부도 효율적으로 할 수 있고 얻어가는 것도 많을 것 같다.
- 간단히 해야할 것들을 정리해보면 자료구조, Skatch, 알고리즘, 알바, 42 정도는 명확히 해야한다.
- 힘내자 힘!