카테고리 없음

[프로그래머스 / Python] 다음 큰 숫자 | 초코더

cloud_nice 2020. 8. 17. 18:28

안녕하세요 ~ 초코더 입니다 !!!

지난 5개월간 정말 열심히 인턴기간을 지내고 왔습니다 ~ 정말 배운점도 많고 뜻깊은 5개월이었고 정신없이 달려오니 하반기 준비기간이 되었네요 ㅜㅜ 인턴 후기? 는 따로 포스팅 해두겠습니다 ! 인턴 끝난 직후에는 보름정도 다시 코딩테스트 손에 익히는 시간을 가졌습니다. 이젠 집중해서 코테, 포폴 등 취업준비를 해보려고 합니다! 다시열심히 블로그 포스팅도 하고 1일1커밋도 해보려구요.. 다들 열심히 해보아요 `~~ 홧팅 !

 

https://programmers.co.kr/learn/courses/30/lessons/12911

 

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

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

programmers.co.kr

접근법

처음에 굉장히 어렵게 생각했는데 간단한 접근법이 있었습니다 ㅜ

1. n을 bin()함수를 이용해서 2진수로 변환

2. 1의 갯수 확인

3. 10진수 n< x <=1,000,000 사이의 숫자를 하나씩 2진수로 바꿔서 1의 갯수가 같으면 리턴해줍니다.

 

count(),bin(),oct(),hex() 내장함수 쓰는 것을 생활화 해야겠네요 !! combination, permutation 손에 익히는 것도 꽤걸렸는데!! 내장함수를 사용하면 훨씬 쉽게 풀리니깐요 ~

 

코드

def solve(n):
    cnt_1 = str(bin(n)).count('1')
    for i in range(n+1,1000001):
        if str(bin(i)).count('1') == cnt_1:
            return i