Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 백엔드
- 김영한
- vite
- SQL
- BreadcrumbsComputer-Networking_A-Top-Down-Approach
- 프로세스 주소 공간
- 쉬운코드
- 운영체제
- 반효경
- 개발남노씨
- 코딩애플
- 코딩테스트 [ ALL IN ONE ]
- 시그널 핸들러
- 시스템프로그래밍
- 커널 동기화
- 트랜잭션
- B tree 데이터삽입
- 쉬운 코드
- 네트워크
- Extendable hashing
- 갤럭시 S24
- concurrency control
- 온디바이스AI
- 데이터베이스
- CPU 스케줄링
- recoverability
- 운영체제와 정보기술의 원리
- SDK
- Git
- 인터럽트
Archives
- Today
- Total
티끌모아 태산
이진 변환 반복하기 본문
728x90
문제 설명
0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다.
- x의 모든 0을 제거합니다.
- x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다.
예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다.
0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
- s의 길이는 1 이상 150,000 이하입니다.
- s에는 '1'이 최소 하나 이상 포함되어 있습니다.
핵심 아이디어
- bin() 메서드 활용하기: 정수를 이진수로 바꿔주는 함수.
❗주의 할 점은 정수를 이진수로 바꿀 때, 원하는 값을 출력하기 위해 bin()[2:] 를 해줘야한다. bin() 만 사용하게 될 경우, 예를들어 0b100 모두 출력 되지만 bin()[2:] 사용하면 100이 출력된다.
코드 구현
def solution(s):
# a: 이진 변환 횟수, b: 제거한 0의 개수
a,b = 0,0
while s != '1':
a += 1
# 1의 개수 카운트
num = s.count('1')
# 0의 개수 누적하기
b += len(s) - num
# s 재조정
s = bin(num)[2:]
answer = [a,b]
return answer
728x90