티스토리 뷰
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 방법을 사용하였다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level2, 점프와 순간 이동 (Python) (0) | 2021.06.10 |
---|---|
[프로그래머스] Level2, 삼각 달팽이 (Python) (0) | 2021.06.10 |
[프로그래머스] Level2, 영어 끝말잇기 (Python) (0) | 2021.06.09 |
[프로그래머스] Level2, 가장 큰 정사각형 찾기 (Python) (0) | 2021.06.08 |
[프로그래머스] Level2, 올바른 괄호 (Python) (0) | 2021.06.08 |