level2_이진 변환 반복하기
2024. 2. 22. 15:10ㆍ파이썬_알고리즘(코딩테스트)/level2


내가 제출한 코드
def solution(s):
# 이진 변환 횟수와 제거된 0의 총 개수를 저장
answer = []
# 이진 변환 횟수를 세는 변수
count_bin = 0
# 제거된 0의 개수를 세는 변수
count_zero = 0
# 입력된 문자열 s가 1이 아닐때까지 루프 실행
while s != '1':
# 모든 0을 제거
count_zero += s.count("0")
s = s.replace("0", "")
len_value = len(s)
# bin함수
# bin(3)은 "0b11"반환하기 때문에 [2:]설정
s = bin(len_value)[2:]
count_bin += 1
answer.append(count_bin)
answer.append(count_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]
내장함수 정리
bin()
- 전달받은 정수 자료형을 2진로 돌려준다.
- 자동으로 자리를 맞춰주거나 연산을 해준다.
ex) bin(3) -> "0b11"로 반환
oct()
- 8진수
ex) oct(10) -> "0o12"로 반환
hex()
- 16진수
ex) hex(10) -> "0xa"로 반환
eval()
- 문자열로 된 수식을 자동으로 계산해준다.
- 어떤분 블로그 참고하니깐.. 실제로는 위험한 함수라고 실전에서 잘 사용하지 않는다고 한다.
내장함수 찾아보다가 유용한 함수가 있어서 같이 정리했다.
'파이썬_알고리즘(코딩테스트) > level2' 카테고리의 다른 글
| level2_다음 큰 숫자 (0) | 2024.02.27 |
|---|---|
| level2_숫자의 표현 (0) | 2024.02.25 |
| level2_올바른 괄호(스택/큐) (0) | 2024.02.21 |
| level2_최솟값 만들기 (1) | 2024.02.19 |
| level2_최댓값과 최솟값 (0) | 2024.02.05 |