[코딩테스트 연습] -이진 변환 반복하기 📆

2021. 1. 30. 21:17·🧇 Algorithm/프로그래머스
728x90

📆 월간 코드 챌린지 시즌1

 

문제 설명

0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다.

  1. x의 모든 0을 제거합니다.
  2. x의 길이를 c라고 하면, x를 c를 2진법으로 표현한 문자열로 바꿉니다.

예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다.

0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 1이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요.

 

제한 사항

  • s의 길이는 1 이상 150,000 이하입니다.
  • s에는 '1'이 최소 하나 이상 포함되어 있습니다.

입출력 예

sresult

s result
"110010101001" [3,8]
"01110" [3,3]
"1111111" [4,1]

 

나의 코드

def solution(s):
    zeros, cnt = 0, 0

    while s != "1":
        cnt += 1

        # remove 0s
        tmp = ""
        for c in s:
            if c != "0":
                tmp += c
        num = len(tmp)
        zeros += len(s) - num

        # to binary
        tmp = ""
        while num >= 2:
            tmp = str(num % 2) + tmp
            num //= 2
        tmp = str(num) + tmp
        s = tmp

    return [cnt, zeros]
  • 입출력 예를 제대로 이해하면 해결 자체는 쉬운 문제
  • 반복하면서 0제거와 2진수 변환을 수행
  • bin함수 사용하지 않고 일부러 복습 겸 짜봤는 데, 다음에 더 간결하게 풀어봐야겠다.
728x90

'🧇 Algorithm > 프로그래머스' 카테고리의 다른 글

[코딩테스트 연습] - 폰케몬  (0) 2021.02.06
[스킬 체크 테스트 Level.2]  (0) 2021.02.06
[코딩테스트 연습] - 3진법 뒤집기 📆  (0) 2021.01.30
[코딩테스트 연습] - 내적 📆  (0) 2021.01.30
[코딩테스트 연습] - 두 개 뽑아서 더하기 📆  (0) 2021.01.30
'🧇 Algorithm/프로그래머스' 카테고리의 다른 글
  • [코딩테스트 연습] - 폰케몬
  • [스킬 체크 테스트 Level.2]
  • [코딩테스트 연습] - 3진법 뒤집기 📆
  • [코딩테스트 연습] - 내적 📆
soyang.
soyang.
코딩 및 개발 일지를 기록합니다.
  • soyang.
    소소한 코딩일지
    soyang.
  • 전체
    오늘
    어제
  • 링크

    • Github 🐾
    • 포트폴리오 📓 (리뉴얼중)
    • LinkedIn 👩🏻‍💼
  • 공지사항

    • 소소한 코딩일지
  • 블로그 메뉴

    • 방명록
    • 분류 전체보기 (181)
      • 🚩 목표 & 회고 (9)
      • 📓 Papers (10)
      • 🧇 Algorithm (44)
        • 이론 (1)
        • LeetCode (2)
        • 프로그래머스 (30)
        • 백준 (11)
      • 💻 Study (47)
        • 🤖 AI 인공지능 (3)
        • Python 파이썬 (3)
        • Docker 도커 (4)
        • 웹 (20)
        • 안드로이드 (2)
        • JAVA 자바 (1)
        • Firebase (3)
        • Linux 리눅스 (10)
      • 🍪 Projects (2)
      • 🎒 학교 (44)
        • 대학원 도비 (2)
        • 21 동계 모각코: 슈붕팥붕 (13)
        • 21 하계 모각코: 와팬호 (13)
        • 20 동계 모각코: 와팬호 (13)
      • 활동들 (16)
        • 인프런 대학생 LEAF 2기 (9)
        • 2021 Silicon Valley Online .. (7)
  • 태그

    코딩테스트
    Linux
    목표
    Artificial Intelligence
    Algorithm
    Python
    Ai
    인프런대학생Leaf
    Gentoo
    React
    프로그래머스
    알고리즘
    공부
    리액트
    programmers
    모각코
    노마드코더
    알고리즘스터디
    error
    백준
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
soyang.
[코딩테스트 연습] -이진 변환 반복하기 📆
상단으로

티스토리툴바