오늘은 프로그래머스에서 파이썬 코테 연습!
파이썬은 아직 익숙치 않아 난이도가 낮은 것 부터 시작한다!
https://school.programmers.co.kr/learn/courses/30/lessons/70129
0과 1로 이루어진 문자열 s에 대한 이진변환은 아래와 같다
모든 s의 0을 제거하고난 뒤 s의 길이를 2진법으로 표현한다.
ex) s="011010" -> "1111" -> "100"
이 과정을 s가 "1"이 될 때 까지 반복했을 때, 이진 변환의 횟수와 제거된 0의 개수를 배열에 담아 return해라.
- 입력 - 출력
"110010101001" / [3,8]
"01110" / [3,3]
"1111111" / [4,1]
우선 함수에서 횟수를 셀 변수를 2가지 준비한다.
1이 될 때까지 반복해야 하므로 while not b=='1': 구문으로 반복문을 만든다.
count("0")
함수를 이용하면 string에서 문자열이 등장한 횟수를 셀 수 있다. 그리고 replace(a, b)
함수를 이용하면 a를 b로 치환이 가능하다. 0을 빈칸으로 교체한다.
bin()
함수를 이용하면 int값을 2진 문자열로 변환할 수 있다. 다만 접두사 '0b'를 같이 반환하므로 [2:]를 이용해서 잘라준다.
계속 반복문을 돌다보면 1로 수렴하게 되고 count 값들을 리스트에 담아 반환하면 완료!
def solution(s):
count_zero = 0
count_loop = 0
b = s
while not b == '1':
count_loop += 1
count_zero += b.count("0")
b = b.replace("0", "")
b = bin(len(b))[2:]
answer = [count_loop, count_zero]
return answer