https://programmers.co.kr/learn/courses/30/lessons/70129
이 문제는
입력받은 문자열의 개수를 이진법으로 바꿨을때의 값이
1이 될 때까지 아래 과정을 반복하는 것!
1. 입력 받은 문자열에서 0을 모두 제거한다.
2. 1의 개수를 이진법으로 변환한다.
3. 이진법으로 변환한 값이 딱 "1"이 될 때까지 위 과정을 반복한다.
def solution(s):
zero_cnt=0 # 0의 개수
change_cnt=0 # 변환 횟수
while s!='1':
# 1. 0 제거
word=''
for i in s:
if i=='1':
word+=i
else:
zero_cnt+=1
after_cnt=len(word) # 1의 개수
# 2. 이진 변환
change_word=''
change_cnt+=1
while after_cnt>=1:
change_word+=str(after_cnt%2)
after_cnt=after_cnt//2
s=change_word[::-1]
answer=[change_cnt,zero_cnt]
return answer
< 다른 사람 풀이 >
bin 함수
-> 10진수를 2진수로 변환해주는 함수!
[2:]를 해주는 이유는?
-> bin(10)을 하게 되면 '0b1010'이라는 값이 나온다.
여기서 0b를 없애줘야 한다!
def solution(s):
change_cnt, zero_cnt = 0, 0
while s != '1':
change_cnt += 1
num = s.count('1')
zero_cnt += len(s) - num
s = bin(num)[2:] # 이진수로 변환
return [change_cnt,zero_cnt]
파이썬 : 2진수, 8진수, 16진수 다루기
=> 내장함수 사용!
1. 10진수 -> X진수
10진수 -> 2진수
: bin(숫자 혹은 다른 진수로 나타낸 값)
10진수 -> 8진수
: oct(숫자 혹은 다른 진수로 나타낸 값)
10진수 -> 16진수
: hex(숫자 혹은 다른 진수로 나타낸 값)
2. X진수 -> 10진수
int(값, X)
2진수 -> 10진수
int(값, 2)
8진수 -> 10진수
int(값, 8)
16진수 -> 10진수
int(값, 16)
참고 사이트
https://www.daleseo.com/python-int-bases/
'여니의 취준 준비 > 코딩테스트 (Python)' 카테고리의 다른 글
[Coding Test] 파이썬 문법, 속성 총 정리 (0) | 2022.08.13 |
---|---|
[프로그래머스] 게임 맵 최단거리 in python (0) | 2022.07.01 |
[Python] 반올림함수 round | (사사오입, 오사오입) (0) | 2022.06.18 |
[Coding Test] 시간 복잡도 총정리! (0) | 2022.04.15 |
[Python] 입출력 관련 모음집 (0) | 2022.03.25 |