https://school.programmers.co.kr/learn/courses/30/lessons/70129
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
- 반복을 하는데 while문을 사용하는 게 핵심이었다.
- 반복을 할 때마다 문자열을 재초기화를 해준다.
- 돌리면서 0이 개수를 카운트 해준다.
- 문자열의 길이를 가지고 이진수 변환 (0b1101) 슬라이싱 필요 0b 제거
문제 코드
def solution(x):
answer = []
cnt = 0
zero = 0
while True:
if x == '1':
break
zero = zero + x.count("0")
x = x.replace("0","")
x = bin(len(x))[2:]
cnt +=1
answer = [cnt, zero]
return answer
다른 사람 풀이
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]
- len(s) - len(문자열 내 1의 갯수)하면 사라질 0의 개수
def solution(s):
from collections import Counter
cnt, zero = 0, 0
while s != '1':
cnt += 1
counter = Counter(s)
zero += counter['0']
s = bin(counter['1'])[2:]
return [cnt, zero]
- collections 의 Counter 라이브러리 가져옴
'Programmers > 2단계' 카테고리의 다른 글
콜라문제 (0) | 2023.03.29 |
---|