https://programmers.co.kr/learn/courses/30/lessons/12911
코딩테스트 연습 - 다음 큰 숫자
자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니
programmers.co.kr
def solution(n):
cnt = bin(n)[2:].count('1')
result = 0
for x in range(n+1, 1000001):
if bin(x)[2:].count('1') == cnt:
result = x
break
return result
풀이
1. n을 2진수로 바꾸고 1의 개수를 cnt에 기록
2. n+1부터 1000000까지 해당 수를 2진수로 바꾸고 1의 개수가 cnt인 것을 찾으면 break
3. 결괏값 리턴
bin함수를 사용하면 '0b(2진수)'가 된다. 슬라이싱을 이용해서 '0b'를 제거 해주자
추가로 2진수를 10진수로 바꿀 때, int(2진수, 2)를 사용할 수 있다.
(int화 할 것인데 해당 수는 2진수라는 뜻으로 2를 option으로 사용)
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv2 - 숫자의 표현 (파이썬) (0) | 2022.05.17 |
---|---|
[프로그래머스] Lv2 - 땅따먹기 (파이썬) (0) | 2022.05.14 |
[프로그래머스] Lv2 - 올바른 괄호 (파이썬) (0) | 2022.05.14 |
[프로그래머스] Lv2 - 가장 큰 정사각형 찾기 (파이썬) (0) | 2022.05.14 |
[프로그래머스] Lv2 - 방문 길이 (파이썬) (0) | 2022.05.13 |