본문 바로가기
*Algorithm/Programmers_Level2

[programmers] 프로그래머스 Level2 다음 큰 숫자(파이썬 Python)

by codinguser 2020. 11. 18.

프로그래머스
(주)그렙

 

[programmers] 프로그래머스 Level2 다음 큰 숫자 

(파이썬 Python)

 

* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제

 

 

 

1) 문제


프로그래머스 다음 큰 숫자

 

코딩테스트 연습 - 다음 큰 숫자

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니

programmers.co.kr

 

 

 

 

 

2) 풀이 과정


 

1. 입력된 숫자 n을 +1씩 증가

 

2. 이진수로 변환

 

3. 1의 개수가 동일 한지.

 

4. 1~3의 경우를 만족하면 가장 작은 수.

 

 

 

 

 

< < 사고 과정 > >


 

X

 

 

 

 

 

 

 

 

3) 코드


크게 2가지로 나누었다. 2개 모두 구현 해보는걸 추천한다.

 

 

(1) 파이썬 내장함수 bin()을 알았을 경우

1
2
3
4
5
6
7
def solution(n):
    answer = n
    
    while True:
        answer += 1
        if(bin(answer).count('1'== bin(n).count('1')):
            return answer
 
cs

 

 

(2) 파이썬 내장함수 bin()을 몰랐을 경우

: 직접 bin()과 유사한 함수를 만들면 됨.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
def binary(n):
    if(n == 1):
        return '1'
    
    return binary(n//2+ str(n%2)
    
def solution(n):
    answer = n
    
    while True:
        answer += 1
        if(binary(answer).count('1'== binary(n).count('1')):
            return answer
 
cs

 

 

 

 

 

4) 정리 노트


 

 

 

* 편한 내장함수를 쓰는 것도 중요하지만, 불편하지만 직접 내장 함수처럼 구현하는 과정 또한 매우 중요.

 

댓글