문제
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):
answer = n
real = check(answer)
answer += 1
while check(answer) != real:
answer += 1
return answer
def check(n):
cnt = 0
while n>0:
if n%2 == 1:
cnt += 1
n = n//2
return cnt
단순하게 이진으로 바꾸는 과정에서 1이면 카운트하여 값을 리턴하는 check 메소드를 만들었다.
while문을 돌려서 처음 숫자와 동일한 1 카운트값을 가질 때까지 실행시켜 값을 찾으면 return하게 만들었다.
다른사람들 코드를 보고 bin이라는 메소드를 알게되었다.
def solution(n):
real = bin(n).count('1')
answer = n + 1
while bin(answer).count('1') != real:
answer += 1
return answer
check로 이진수 1을 카운트하는 대신 간단히 bin 메소드로 체크할 수 있었다.
'공부-코딩테스트 > 코테풀이 - 자바, 파이썬' 카테고리의 다른 글
2805. 농작물 수확하기 (SW Expert Academy, 코딩테스트) (0) | 2022.04.15 |
---|---|
[1차] 캐시 (코딩테스트, 프로그래머스) (0) | 2022.04.14 |
구명보트 (코딩테스트, 프로그래머스, 파이썬) (0) | 2022.03.06 |
뉴스 클러스터링 (코딩테스트, 프로그래머스, 파이썬) (0) | 2022.02.26 |
큰 수 만들기 (코딩테스트, 프로그래머스, 파이썬) (0) | 2022.02.24 |
댓글