[programmers] 프로그래머스 Level2 다음 큰 숫자
(파이썬 Python)
* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제
1) 문제
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) 정리 노트
* 편한 내장함수를 쓰는 것도 중요하지만, 불편하지만 직접 내장 함수처럼 구현하는 과정 또한 매우 중요.
'*Algorithm > Programmers_Level2' 카테고리의 다른 글
[programmers] 프로그래머스 Level2 타겟 넘버 (파이썬 Python) (0) | 2021.04.24 |
---|---|
[programmers] 프로그래머스 Level2 행렬의 곱셈(파이썬 Python) (0) | 2020.11.19 |
[programmers] 프로그래머스 Level2 피보나치 수(파이썬 Python) (0) | 2020.11.17 |
[programmers] 프로그래머스 Level2 올바른 괄호(파이썬 Python) (0) | 2020.11.16 |
[programmers] 프로그래머스 Level2 124 나라의 숫자(파이썬 Python) (0) | 2020.11.12 |
댓글