관리 메뉴

솜씨좋은장씨

[Programmers] 다음 큰 숫자 (Python) 본문

Programming/코딩 1일 1문제

[Programmers] 다음 큰 숫자 (Python)

솜씨좋은장씨 2021. 6. 9. 02:02
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 프로그래머스의 다음 큰 숫자 입니다.

 

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

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

programmers.co.kr

Solution

def solution(n):
    answer = 0
    
    one_count = bin(n).count("1")
    
    for num in range(n+1, 1000001):
        num_one_count = bin(num).count("1")
        
        if one_count == num_one_count:
            answer = num
            break
    
    return answer

Solution 풀이

이 문제는 이진수로 변환하였을때 입력한 수와 1의 개수는 같으면서 다음으로 큰 숫자를 찾는 문제 입니다.

먼저 입력받은 수를 bin을 활용하여 이진수로 변환한 뒤 1의 개수를 count("1")로 세어줍니다.

 

이제 입력받은 n 보다 더 크면서 1000000보다 작은 숫자를 찾아야하므로 반복문을 돌면서 찾습니다.

범위는 n+1 부터 1000000 까지!

이제 각각의 숫자를 bin을 활용하여 이진수로 바꾼다음 1의 개수를 세고 

그 수가 아까 세어둔 수와 같다면! 정답에 넣어주고 반복문을 종료합니다.

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments