본문 바로가기
프로그래머스/Python

[프로그래머스] 다음 큰 숫자 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 6.
728x90
반응형

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. 다음 큰 수를 찾기 위해 입력받은 다음 수를 저장한다. num = n + 1
  2. 입력받은 수를 2진수로 바꾼 결과를 저장할 리스트를 생성한다. li = list()
  3. 입력받은 수가 0이 될 때까지 반복한다. while (n != 0)
  4. 2로 나눈 나머지를 리스트에 추가한다. li.append(n % 2)
  5. 2로 나눈 몫을 새롭게 저장한다. n //= 2
  6. 다음 수의 2진수 변환 결과를 저장할 리스트를 생성한다. li2 = list()
  7. 두 2진수의 결과 리스트의 1의 개수가 같을 때까지 반복한다. while (li2.count(1) != li.count(1))
  8. 리스트를 초기화한다. li2.clear()
  9. 다음 숫자를 변환할 숫자로 만들어준다. n = num
  10. 다음 숫자로 바꿔준다. num += 1
  11. 입력받은 수가 0이 될 때까지 반복한다. while (n != 0)
  12. 2로 나눈 나머지를 리스트에 추가한다. li2.append(n % 2)
  13. 2로 나눈 몫을 새롭게 저장한다. n //= 2
  14. 정해진 다음 큰 수의 2진 결과를 10진수로 변환한다. for i in range(len(li2)): answer += (2 ** i) * li2[i]
반응형

3. 소스코드

def solution(n):
    answer = 0
    
    num = n + 1
    
    li = list()
    while (n != 0):
        li.append(n % 2)        
        n //= 2
    
    li2 = list()
    while (li2.count(1) != li.count(1)):
        li2.clear()
            
        n = num
        num += 1
        
        while (n != 0):
            li2.append(n % 2)
            n //= 2
        
    for i in range(len(li2)):
        answer += (2 ** i) * li2[i]
        
    return answer
728x90
반응형