반응형
programmers.co.kr/learn/courses/30/lessons/70129
친절하게 이진 변환 방식을 다 알려줘서 그걸 코드로 바꾸면 된다
1) 문자열에 0의 개수를 세고 0을 제거하고 새로운 문자열을 만든다
2) tmp = 새로운 문자열의 길이 로 지정해서 tmp를 다시 이진수로 만든다
요걸 반복해서 1만 남을 때까지 돌린다
위 방식을 코드로 나타내면 다음과 같다
def solution(s):
answer = []
cnt = 0
zero_ = 0
while s != "1":
str_ = ''
for i in s:
if i == '0':
zero_ +=1
else:
str_ += i
tmp = int(len(str_))
str_ = ''
while tmp != 0:
str_ = "01"[tmp%2]+ str_
tmp = tmp//2
s = str_
cnt += 1
answer.append(cnt)
answer.append(zero_)
return answer
다른 사람의 풀이를 봤는데...
와 파이썬이면 str.count 써야지.... 그래....
bin()은 이진수로 바꿔주는 내장함수... 크으으 파이썬 내장함수 짱짱...
def solution(s):
a, b = 0, 0
while s != '1':
a += 1
num = s.count('1')
b += len(s) - num
s = bin(num)[2:]
return [a, b]
'개발 > 알고리즘' 카테고리의 다른 글
[codility] CyclicRotation (0) | 2021.02.16 |
---|---|
[codility] BinaryGap (0) | 2021.02.16 |
[프로그래머스] 행렬의 곱셈 (0) | 2021.02.15 |
[프로그래머스] 카펫 (0) | 2021.02.15 |
[프로그래머스] 124 나라의 숫자 (0) | 2021.02.15 |
댓글