20200427 가즈아ㅏㅏㅏ

춤추는망고·2020년 4월 28일
0

정리 전 블로그 글들

목록 보기
22/40
post-thumbnail

슈퍼개발자, 춤추는망고입니다.

( 춤 안춥니다. )





이번 시리즈는...

하루에 한알!

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):








문제를 보니,

  1. 인자로써 받은 숫자 ( int ) 를

  2. 2진법화 ( binary ) 하여

  3. Binary Gap ( 1 과 1 사이에 0 이 있을 때, 0 의 개수 ) 을 return 해야한다!

라는 내용인 것 같네요.







그렇다면,



저희가 확실히 파악할 수 있는 내용은

def solution(N):
# 주어진 함수의 이름은 " solution " 매개변수는 " N "
# N 이라는 매개변수에는 정수형 데이터만 들어옴.

겠네요 ㅎ







조건을 보니



  1. 인자를 2진법화 하여,

  2. 그 데이터의 binary gap 을 구하고,

  3. 그 중 가장 큰 값 을 반환하면 되겠군요!





# 생각이 난 명령!
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]

오늘의 결과 : 성공쓰!

정답이래요! ( > 3<)=3

기부니가 매우 좋군요 ㅎ




모범답안

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









프로젝트 때문에, 많이 바빠져서 글 올리는걸 까먹고 있었습니다... ㅠㅜ

어제건데... ㅜㅠㅠㅜ 더 분발해보겠습니다 ㅠ

오늘 하루도, 우리 모두 화이팅!





감사합니다. ( _ _)

profile
지금까지 이런 망고는 없었다. 이것은 개발자인가 춤추는망고인가

0개의 댓글