Level 2. 이진 변환 반복하기
이진 변환 반복하기
코딩테스트 연습 > 월간 코드 첼린지 시즌 1 > 이진 변환 반복하기
https://programmers.co.kr/learn/courses/30/lessons/70129
문제 설명
# 문제 정리
- 입력: 이진수 문자열
- 과정:
1. 변환 횟수와 해당 과정에 있어 발생하는 '0'의 갯수의 초기값을 0,0으로 설정한다.
2. while문을 이용하여 입력한 이진수 문자열의 값이 '1' 이 될 때 까지
1) 해당 단계에서 문자열의 '0'개수를 구하여 더한다.
2) 해당 단계에서 문자열의 '1'개수를 구하여 bin()[:2]한다. 이 때, [:2]를 취함은 bin()을 적용 시 '0bxxxx'형태로 나타나기 때문이다. 다른 방법으로는 format(n,'b')가 있다.
3) 변환 횟수에 1을 더한다.
3. 위의 과정을 종료한 후 변환 횟수와 해당 과정에 있어 '0'의 개수를 리스트 형태로 출력한다.
문제 풀이
# Input value
s = "110010101001"
cnt, zero = 0,0 # Set initial value: cnt:number of transform, zero: number of '0' value
while s != '1': # Before s = '1'
zero += s.count('0') # Count number of '0'
s = bin(s.count('1'))[2:] # Consider bin()[2:] because bin() = '0bxxxx'
cnt += 1 # Count number of transform
[cnt,zero]
무난했던 문제였습니다.
전체 코드
def solution(s):
[cnt, zero] = [0, 0]
while s != '1':
zero+=s.count('0')
# s = format(s.count('1'),'b')
s = bin(s.count('1'))[2:]
cnt+=1
return [cnt, zero]
Author And Source
이 문제에 관하여(Level 2. 이진 변환 반복하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pear_min/Level-2.-이진-변환-반복하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)