코딩테스트 연습 - 다음 큰 숫자 | 프로그래머스 (programmers.co.kr)

 

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

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

programmers.co.kr

풀이)

알고리즘)

  • n을 이진수로 변환
  • 이진수 n에 대하여 1의 개수를 카운팅
  • n++ (위와 같은 과정을 반복하며 n의 1의 개수가 처음에 카운팅한 1의 개수와 처음으로 같아질 때 n리턴)

코드)

def solution(n):
    answer = 0
    b = format(n,'b') # n을 이진수로 변환
    str_b = str(b) # 이진수n을 문자형으로 변환
    cnt = 0
    for i in str_b: # 이진수 n에 포함된 1의 갯수 카운팅
            if i == "1":
                cnt += 1 
    while True:
        n += 1 # n값을 1씩 증가시키며 조건에 맞는 result값 구하기
        b = format(n, 'b')
        str_b = str(b)
        count = 0
        for i in str_b:
            if i == "1":
                count += 1
        if(cnt == count):
            answer = n
            break
    return answer

'프로그래머스' 카테고리의 다른 글

튜플  (0) 2021.10.10
조이스틱  (0) 2021.10.03
거리두기 확인  (0) 2021.10.03
뉴스 클러스터링  (0) 2021.09.27
기능개발  (0) 2021.09.27

+ Recent posts