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
- binary search
- 파이썬알고리즘
- 파이썬 프로그래머스
- 릿코드
- python xor
- 파이썬 릿코드
- python Leetcode
- python 릿코드
- python priority queue
- 릿코드풀기
- leetcode 풀기
- 잇츠디모
- 파이썬릿코드풀기
- 상가수익률계산기
- leetcode풀기
- 알고리즘풀기
- 파이썬알고리즘풀기
- 코틀린기초
- 파이썬 알고리즘 풀기
- 릿코드풀이
- python sorted
- 릿코드 풀기
- 릿코드 파이썬
- LeetCode
- 파이썬 알고리즘
- python zip_longest
- python 알고리즘
- leetcode풀이
- 파이썬릿코드
- 알고리즘풀이
Archives
- Today
- Total
소프트웨어에 대한 모든 것
LeetCode 풀기 - 1342. Number of Steps to Reduce a Number to Zero 본문
반응형
1342. Number of Steps to Reduce a Number to Zero
https://leetcode.com/problems/number-of-steps-to-reduce-a-number-to-zero/
문제)
솔루션1)
모듈레이션 연산을 수행해서 나머지가 0이면 even, 아니면 odd
even이면 나누기 2 연산, 아니면 -1 연산 후 카운팅을 증가.
num이 0이 될 때까지 반복연산
class Solution:
def numberOfSteps(self, num: int) -> int:
count = 0
while num > 0:
if num % 2 == 0:
# even
num /= 2
else:
num -= 1
count += 1
return count
솔루션2)
비트 연산자, 비트 쉬프트 연산자를 활용해서 문제를 푼다.
우 비트 쉬프트 연산은 나누기 2 연산을 의미한다.
num의 이진수의 첫번째 자리가 1은 even을 의미한다.
class Solution:
def numberOfSteps(self, num: int) -> int:
ret = 0
while num > 0:
ret += 1 + (num & 1)
num >>= 1
return ret
솔루션3)
bin() 함수를 이용해서 10진수 num을 이진수 문자열로 변환한다.
앞으 '0b'는 제거한다.
이진수 문자열의 개 수 n번은 n번 나누기를 수행하면 0이 된다는 의미이다.
이진수 문자열에서 1의 개 수는 홀 수가 몇 번 나오는가를 의미한다.
위 둘을 더하고 마이너스 1을 구하면된다. -1은 최상위 1이 두번 카운팅되기 때문에 -1을 취한다.
class Solution:
def numberOfSteps(self, num: int) -> int:
# without '0b'
bin_str = bin(num)[2:]
return len(bin_str) + bin_str.count('1') - 1
반응형
'알고리즘 > LeetCode' 카테고리의 다른 글
LeetCode 풀기 - 797. All Paths From Source to Target (0) | 2021.11.08 |
---|---|
LeetCode 풀기 - 1688. Count of Matches in Tournament (0) | 2021.11.08 |
LeetCode 풀기 - 1877. Minimize Maximum Pair Sum in Array (0) | 2021.11.06 |
LeetCode 풀기 - 1281. Subtract the Product and Sum of Digits of an Integer (0) | 2021.11.06 |
LeetCode 풀기 - 1720. Decode XORed Array (0) | 2021.11.06 |
Comments