문제
https://school.programmers.co.kr/learn/courses/30/lessons/70129
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 요약
x의 모든 0을 제거하고 그 길이를 c라고 한다면, c를 2진법으로 표현한다.
이게 이진 변환이라고 한다면, 주어진 s를 가지고 1이 될때까지 위 방식을 반복한다.
풀이
이진 변환 방식을 코드로 나타내고 1이 될때까지 반복되도록 while문을 작성하면 금방 푸는 문제였다.
bin() 함수를 활용해서 쉽게 이진수로 나타내면 더 빠르게 풀 수 있다.
def solution(s):
cnt = 0
zero = 0
while s != '1':
zero += s.count('0')
s = s.replace('0', '')
s = bin(len(s))[2:]
cnt += 1
return [cnt, zero]
시간복잡도
0의 개수를 세고 삭제하고 변환하고 <- 하면 길이 자체가 N logn... log log n이기 때문에 다 합하면 O(n) 정도 된다.
'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글
| [Python] 프로그래머스 Lv2. 무인도 여행 (0) | 2026.09.28 |
|---|---|
| [Python] 프로그래머스 Lv3. 기지국 설치 (0) | 2026.09.27 |
| [Python] 프로그래머스 Lv2. JadenCase 문자열 만들기 (0) | 2026.09.27 |
| [Python] 프로그래머스 Lv3. 자물쇠와 열쇠 (0) | 2026.09.27 |
| [Python] 프로그래머스 Lv3. 가장 긴 팰린드롬 (2) | 2026.09.21 |