본문 바로가기
공부-코딩테스트/코테풀이 - 자바, 파이썬

다음 큰 숫자 (프로그래머스, 코딩테스트)

by 령과 2022. 4. 13.

문제

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 메소드로 체크할 수 있었다.

댓글