문제 링크 (Level 2)
https://school.programmers.co.kr/learn/courses/30/lessons/70129
나의 코드 (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번부터 반복한다
'코딩공부 > 프로그래머스 (python)' 카테고리의 다른 글
[프로그래머스] JadenCase 문자열 만들기 (Python) (0) | 2022.09.25 |
---|---|
[프로그래머스] 최솟값 만들기 (Python) (0) | 2022.09.16 |
[프로그래머스] 최댓값과 최솟값 (Python) (0) | 2022.09.07 |
[프로그래머스] [1차] 다트 게임 (Python) (0) | 2022.08.14 |
[프로그래머스] 콜라츠 추측 (Python) (0) | 2022.08.14 |
댓글