티스토리 뷰

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 방법을 사용하였다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30