이진변환 반복하기

yongju·2022년 11월 10일
0

Programmers

목록 보기
15/23
post-thumbnail

프로그래머스 레벨2 [정답율 74%]

❓문제

❗문제 정리
사용판 파라미터:
s(string) : 입력받는 0과 1로 이루어진 문자열
count_bin(int): 이진변환한 횟수
count_zero(int) : 문자열에 포함된 0의 개수

풀이 방법:
1. 받은 문자열에서 0제거 후 제거하기

  1. 0제거한 후의 문자열 길이 세서 그 길이만큼 2진수 변환

📑코드

def solution(s):
    count_bin, count_zero=0, 0
    while s!='1':
        count_zero+=s.count("0")
        s=s.replace("0","")
        s=bin(len(s))[2:]
        count_bin+=1
    return [count_bin, count_zero]

📝코드 설명

count_bin, count_zero=0, 0

필요한 파라미터 선언

    while s!='1':
        count_zero+=s.count("0")
        s=s.replace("0","")
        s=bin(len(s))[2:]
        count_bin+=1

문제 조건인 s가 1이 될때까지 while문으로 반복
1. 문자열의 0을 세서 count_zero에 넣고
2. 0을 없애기

  • remove는 문자열에 사용할 수 없음 따라서, replace()를 사용하여 대체
  1. 0을 제거한 문자열 s의 길이를 2진변환(bin()[2:]하여 이진수의 숫자만 문자열로 받아옴
  2. 이진변환을 했으므로 count_bin+1

🎖제출 결과

💡insight

profile
AI dev

0개의 댓글