[Leet Code] 1342. Number of Steps to Reduce a Number to Zero
2025. 9. 1. 22:38ㆍCS&알고리즘/Leet Code
문제
https://leetcode.com/problems/number-of-steps-to-reduce-a-number-to-zero

문제 내용 요약
- 정수 num이 주어진다.
- 목표: num을 0으로 줄이는 데 필요한 단계(step)의 수를 반환한다.
- 단계 규칙:
- 현재 숫자가 짝수라면 → 2로 나눈다.
- 현재 숫자가 홀수라면 → 1을 뺀다
내가 작성한 답변
class Solution {
public int numberOfSteps(int num) {
int count = 0;
while (num != 0) {
if (num % 2 == 0) { // 짝수
num /= 2;
} else { // 홀수
num -= 1;
}
count++;
}
return count;
}
}
풀이 강의 답변
class Solution {
public int numberOfSteps(int num) {
int count = 0;
while (num > 0) {
if ((num & 1) == 0) { // 짝수 → 비트 연산 활용
num >>= 1; // 2로 나누기 (비트 시프트)
} else { // 홀수
num -= 1;
}
count++;
}
return count;
}
}
정리
- 두 코드 모두 시간 복잡도는 O(log n)으로 동일하다.
- 첫 번째 코드는 직관적이고 가독성이 좋으며, 두 번째 코드는 비트 연산을 활용해 성능 최적화를 보여준다.
'CS&알고리즘 > Leet Code' 카테고리의 다른 글
| [Leet Code] 4. Median of Two Sorted Arrays (0) | 2025.10.01 |
|---|---|
| [Leet Code] 876. Middle of the Linked List (1) | 2025.09.01 |