이진 변환 반복하기
풀이
주어진 문자열이 '1'이 될 때까지 이진 변환을 반복하면서 반복 횟수와 함께 지운 0의 개수를 반환해야 하는 문제이다.
반복을 몇 번 해야하는지 모르므로 while문을 이용했다.
- 제거한 0의 갯수를 입력한 변수 생성 및 while문 생성
- while문 안에서 count('0')를 이용해서 0 제거
- 1의 갯수만큼으로 다시 2진수로 변환시키니 bin()을 이용하고, 이렇게 하면 0b~~ 로 출력되니 슬라이싱을 이용
- 반복 횟수 +1 및 while문에서 나오면 return값을 return 하기
def solution(s):
count_zero = 0
i = 0
while len(s) > 1 and s != '1':
i += 1
count_zero += s.count('0')
s = bin(s.count('1'))[2:]
return [i, count_zero]
다른 사람 풀이
내가 한 풀이와 별반 다르진 않았다. 다만 count('0') 대신 len(S)-num을 이용했다.
그 외는 동일하다고 보면 된다.
def solution(s):
a, b = 0, 0
while s != '1':
a += 1
num = s.count('1')
b += len(s) - num
s = bin(num)[2:]
return [a, b]
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv2 최솟값 만들기 (python) (0) | 2024.02.02 |
---|---|
프로그래머스 Lv2 숫자 변환하기 (python) (1) | 2024.02.01 |
프로그래머스 Lv1 [PCCE 기출문제] 10번 / 데이터 분석 (python) (0) | 2024.02.01 |
프로그래머스 Lv1 [PCCE 기출문제] 9번 / 이웃한 칸 (python) (1) | 2024.02.01 |
프로그래머스 스킬체크 레벨 1 통과해따리 (0) | 2024.01.31 |