( 춤 안춥니다. )
이번 시리즈는...
하루에 한알!
1일 1 알고리즘 풀기 !
입니다.
(우와아아아앙아ㅏㅏㅏㅏ~!!!!)
양수 N을 이진법으로 바꿨을 때, 연속으로 이어지는 0 중에서 가장 큰 값을 return해 주세요.
- 이어지는 0은 1과 1사이에 있는 것을 의미합니다.
- 이런 것을 binary gap 이라고 합니다.
input: 9 output: 2 설명: 9의 이진수는 1001 입니다. 1과 1사이에 있는 0은 2 이므로, 2를 return
input: 529 output: 4 설명: 529의 이진수는 1000010001 입니다. 1과 1사이에 있는 연속된 0의 수는 4와 3입니다. 이 중 큰 값은 4이므로 4를 return
input: 20 output: 1 설명: 20의 이진수는 10100 입니다. 1과 1사이에 있는 연속된 0의 수는 1 뿐입니다. (뒤에 있는 0은 1사이에 있는 것이 아니므로)
input: 15 output: 0 설명: 15의 이진수는 1111 입니다. 1과 1사이에 있는 0이 없으므로 0을 return
input: 32 output: 0 설명: 32의 이진수는 100000 입니다. 1과 1사이에 있는 0이 없으므로 0을 return
def solution(N):
- 인자로써 받은 숫자 ( int ) 를
- 2진법화 ( binary ) 하여
- Binary Gap ( 1 과 1 사이에 0 이 있을 때, 0 의 개수 ) 을 return 해야한다!
라는 내용인 것 같네요.
def solution(N):
# 주어진 함수의 이름은 " solution " 매개변수는 " N "
# N 이라는 매개변수에는 정수형 데이터만 들어옴.
- 인자를 2진법화 하여,
- 그 데이터의 binary gap 을 구하고,
- 그 중 가장 큰 값 을 반환하면 되겠군요!
# 생각이 난 명령!
target = "{0:b}".format(N)
# 인자로 들어온 N 을 2진법화해서 target 변수에 넣어줘! ( 1 )
result = []
# 결과를 담을 list 를 만들어줘!
if target[-1]=='0':
# 만약에 주어진 수의 2진법 정보가 0으로 끝나면! ( 2 ~ )
target = target.split('1')
# 1을 기준으로 2진법 정보를 나눠줘!
del target[-1]
# 그리고, 맨 마지막 1~끝 부분을 지워줘!
else:
target = target.split('1')
# 0 으로 안끝나면, 그냥 1을 기준으로 나눠줘!
for tar in target:
# 1을 기준으로 사이의 것들이 나뉘어담긴 target 의 원소에 대해 반복해줘!
standard = tar.count('0')
# tar 에 포함된 '0의 개수'를 standard 변수에 담아줘!
result.append(standard)
# 결과 리스트에 standard 변수를 담아줘! ( ~ 2 )
result.sort()
# 결과 리스트를 크기에 맞춰 정렬해줘! ( 3 ~ )
return result[-1]
# 크기로 정렬된 결과 리스트의 마지막 원소를 돌려줘! ( 가장 큰 수! ) ( ~ 3 )
# 제출한 답안!
def solution(N):
target = "{0:b}".format(N)
result = []
if target[-1]=='0':
target = target.split('1')
del target[-1]
else:
target = target.split('1')
for tar in target:
standard = tar.count('0')
result.append(standard)
result.sort()
return result[-1]
def solution(N):
binaryNumber = format(N, 'b')
maximum = 0
binaryNumberList = binaryNumber.strip('0').split('1')
for x in binaryNumberList:
if not x:
continue
if len(x) > maximum:
maximum = len(x)
return maximum
프로젝트 때문에, 많이 바빠져서 글 올리는걸 까먹고 있었습니다... ㅠㅜ
어제건데... ㅜㅠㅠㅜ 더 분발해보겠습니다 ㅠ