프로그래머스/Python
[프로그래머스] 다음 큰 숫자 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 7. 6. 13:59
728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 설명
2. 풀이과정
- 다음 큰 수를 찾기 위해 입력받은 다음 수를 저장한다. num = n + 1
- 입력받은 수를 2진수로 바꾼 결과를 저장할 리스트를 생성한다. li = list()
- 입력받은 수가 0이 될 때까지 반복한다. while (n != 0)
- 2로 나눈 나머지를 리스트에 추가한다. li.append(n % 2)
- 2로 나눈 몫을 새롭게 저장한다. n //= 2
- 다음 수의 2진수 변환 결과를 저장할 리스트를 생성한다. li2 = list()
- 두 2진수의 결과 리스트의 1의 개수가 같을 때까지 반복한다. while (li2.count(1) != li.count(1))
- 리스트를 초기화한다. li2.clear()
- 다음 숫자를 변환할 숫자로 만들어준다. n = num
- 다음 숫자로 바꿔준다. num += 1
- 입력받은 수가 0이 될 때까지 반복한다. while (n != 0)
- 2로 나눈 나머지를 리스트에 추가한다. li2.append(n % 2)
- 2로 나눈 몫을 새롭게 저장한다. n //= 2
- 정해진 다음 큰 수의 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
반응형