728x90
반응형
주어진 이진 숫자에서 0을 제거하고, 제거한 숫자의 길이를 다시 이진 변환하고..
숫자가 1이 될 때까지 이 과정을 반복하는 문제이다!
1이 될 때까지 몇 개의 0을 제거했고, 몇 단계를 거쳤는지 리턴해주면 끝!
def solution(s):
answer = []
cnt = 0 # 제거한 0의 개수
step = 0 # 회차
while s != "1" :
step += 1
new_s = len(''.join(s.split("0")))
cnt += len(s) - new_s
s = ""
while new_s != 1 and new_s != 0 :
s = str(new_s % 2) + s
new_s //= 2
s = str(new_s) + s
answer = [step, cnt]
return answer
뮤.뮤와 코드 공유를 하는데 뮤.뮤가 python의 bin 내장 함수를 알려주었다!
bin(십진수) -> 10진수를 이진수로 바꿔준다.
단, 이때 앞에 '0b'가 붙어나오므로 슬라이싱해주어야한다.
만약 bin으로 바꾼 수를 다시 10진수로 바꾸고 싶다면 int(이진수, 2) 로 변환해주면 된다는 꿀팁!
나는 그냥 이진수 구현을 했는데 시간 제한있는 코딩테스트에서는 bin을 사용하면 실수도 없고, 훨씬 효율적으로 풀 수 있을테니 잘 기억해두어야겠다!
728x90
반응형
'CS Study > Algorithm(Coding Test)' 카테고리의 다른 글
[Programmers] 2019 카카오 개발자 겨울 인턴십 - 튜플 (Python) (0) | 2022.03.25 |
---|---|
[Programmers] 큰 수 만들기 (Python) (0) | 2022.03.25 |
[Programmers] 스킬트리 (Python) (0) | 2022.03.25 |
[Programmers] 피로도 (Python) (0) | 2022.03.24 |
[Programmers] 124 나라의 숫자 (Python) (0) | 2022.03.24 |