내 인생은 개발 중
[프로그래머스] 이진 변환 반복하기 - Python 본문
https://school.programmers.co.kr/learn/courses/30/lessons/70129
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음 풀이
def solution(s):
cnt = 0
zero_cnt = 0
# s가 1이 되면 반복문 종료
while s != '1':
#0의 갯수 세어주기
zero_cnt += s.count('0')
# 0 없애기
s = s.replace('0', '')
# s의 길이를 2진수로 변환
s = str(format(len(s), 'b'))
# 변환 횟수 + 1
cnt += 1
return [cnt, zero_cnt]
나중 풀이
def solution(s):
cnt = 0
zero_cnt = 0
# s가 1이 되면 반복문 종료
while s != '1':
#1의 갯수 세어주기
length = s.count('1')
# 전체 길이 - 1의 갯수 = 0의 갯수
zero_cnt += len(s) - length
# s의 길이를 2진수로 변환
s = str(format(length, 'b'))
# 변환 횟수 + 1
cnt += 1
return [cnt, zero_cnt]
💡알게된 점💡
bin() 함수와 format() 함수를 알게 되었다!
처음엔 bin 함수를 이용해서 풀었는데 bin 함수를 이용하면 `ob + 2진수 변환 수` 이렇게 출력되기 때문에
format 함수를 찾아서 사용했다.
format(n, 'b') 여기서 'b'는 이진수를 뜻한다.
근데 다른 사람들 풀이를 찾아보니 bin 함수를 사용해서 bin(num)[2:] 이렇게 사용하기도 했다.
그리고 나는 0을 replace 이용해서 바꿔줄 생각만 했었는데 어차피 2진수는 0과 1로만 이루어져 있으니
1의 갯수를 구해 전체 길이에서 빼주면 더 쉽게 0을 구할수도 있었다.
필기 시험 끝나면 알고리즘 하루에 2문제씩은 풀어야겠땨!
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 프로세스 - Python (0) | 2024.05.13 |
---|---|
[프로그래머스] 타겟 넘버 - Python (0) | 2024.05.12 |
[프로그래머스] JadenCase 문자열 만들기 - Python (0) | 2024.05.07 |
[프로그래머스] 최솟값 만들기 - Python (0) | 2024.05.05 |
[프로그래머스] 의상 - Python (0) | 2024.05.04 |
Comments