프로그래머스 level2 이진변환 반복하기

Kim Yongbin·2023년 8월 29일
0

코딩테스트

목록 보기
17/162

Problem

Solution

내 풀이

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

진법 변환

  • bin(x): 10진법 → 2진법
  • oct(x): 10진법 → 8진법
  • hex(x): 10진법 → 16진법
    ⇒ 해당 결과 값에 진법 표시(0b, 0o, 0x)가 포함되어 있다.
    → [2:]로 슬라이싱

다른 사람 풀이

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]

문자열은 0과 1로 이루어져 있으므로 전체 길이에서 1의 개수를 뺀 값이 0의 개수이며, 그 값을 그대로 2진법으로 변환하였다. 생각하지도 못한 관점이었다.

Reference

https://security-nanglam.tistory.com/508
https://school.programmers.co.kr/learn/courses/30/lessons/70129

profile
반박 시 여러분의 말이 맞습니다.

0개의 댓글