5<정수<127인 정수에서 이진수로 바꿨을때 1이 가장 많은 최소값을 정수로 두 번 입력하라.
그냥 단순히 머리로만 생각했을때는
2^7 = 128 = 10000000(2진수)
126 = 1111110(2진수) -> 즉 이진수일 때 1이 6개 들어간 가장 작은 값을 찾습니다.
그럼 111111(2진수)가 답인데, 64 = 1000000(이진수)에서 1을 뺀게 답이므로 63을 두 번 입력한 6363이 정답입니다.
이를 코딩으로 해봤습니다.
num = [list(bin(i)) for i in range(6,127)]
count = 0
max = 0
resultStr = ''
for i in range(121):
for j in range(len(num[i])):
if num[i][j] == '1':
count += 1
if max < count:
max = count
resultStr = num[i]
count = 0
resultInt = "".join(resultStr)
print(int(resultInt,2))
출력>