코딩공부/프로그래머스 (python)
[프로그래머스] 이진 변환 반복하기 (Python)
CodingKwon
2022. 9. 13. 22:49
문제 링크 (Level 2)
https://school.programmers.co.kr/learn/courses/30/lessons/70129
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 코드 (Python)
def solution(s):
answer = []
rem = 0 # 제거한 0의 개수
cnt = 0 # 회차
while True:
tmp = 0
cnt += 1 # 회차
# 변환
for i in s:
if i == '0':
rem += 1
else:
tmp += 1
# 종료조건 : 제거후 길이가 1일때
if tmp == 1:
answer.append(cnt)
answer.append(rem)
return answer
# 제거 후 길이를 이진변환
st = ""
while tmp:
a = tmp % 2
tmp //= 2
st = str(a) + st
s = st
1. 0의 수를 카운팅하고 1이 몇 개인지 센다 (rem, tmp)
2. 1을 카운팅 한 변수(tmp)가 1이라면 이는 종료 조건이다
3. 종료조건에 걸리지 않았다면 길이를 다시 이진 변환하고 1번부터 반복한다