알고리즘/프로그래머스
[프로그래머스] Level2, 이진 변환 반복하기 (Python)
wookcode
2021. 6. 9. 22:34
728x90
반응형
문제

https://programmers.co.kr/learn/courses/30/lessons/70129
코딩테스트 연습 - 이진 변환 반복하기
programmers.co.kr
코드
def solution(s):
answer = []
result = ""
count = 0
while_count = 0
while s != "1":
list_s = list(s)
s = format(list_s.count("1"), 'b')
count += list_s.count("0")
while_count += 1
return [while_count, count]
맨처음에는 while문 안에 for문을 돌면서 s 문자열 한개한개 확인해 "1"일 경우 따른 문자열에 추가하고 이런식으로 접근하였는데 당연히 시간초과가 나게 되어서 다른 접근방식을 생각해 보았다.
문자열을 리스트로 만들면 count함수를 사용해 갯수를 구할 수 있게되고 그러면 그 갯수로 문자열에 길이를 파악할 수 있으니 문자열에 길이를 2진수로 바꿔줘 반복해주면 된다.
2진수로 바꾸는 방법은 bin()과 format(10진수, 'b')방법이 있는데 bin을 사용할 경우 0b가 붙어나오기 때문에 format 방법을 사용하였다.
반응형