Study/코딩테스트 연습
다음 큰 숫자
soyeonland
2024. 6. 24. 22:47
1. 2진수를 코딩으로 표현할 수 있는지
(몫이 0 이 될때 까지 나누기, 몫이 0이 됐을 때 나머지들 나열하면 이진수)
십진수를 이진수로 바꾸는 법: 10 단계 (이미지 포함) - wikiHow
십진수에는 각 자리마다 열 가지 가능한 값(0,1,2,3,4,5,5,6,7,8,9)들이 존재합니다. 반대로, 이진수(2를 기저로 하는)는 각 자릿수에 올 수 있는 값이 단 두 가지로, 이는 0 또는 1입니다. 이진법은 전자
ko.wikihow.com
2. 주의점:
몫과 나머지가 계속 바뀌는데, 서로 순서 주의해야함.
def cal_binary(n):
binary = []
cnt = 0
share = n//2
remainder = n%2
binary.append(remainder) # 순서 거꾸로 바꿔야됨
if remainder==1:
cnt +=1
while(share>0):
binary.append(share%2)
if (share%2)==1:
cnt +=1
share = share//2
return cnt, binary
def solution(n):
cnt, binary = cal_binary(n)
#find = False
#print('cnt', cnt)
#print('cnt', cnt, 'binary', binary)
while (1):
n += 1
new_cnt, _ = cal_binary(n)
print('n',n,'new_cnt',new_cnt)
if new_cnt == cnt:
answer = n
break
return answer