[Leet Code] 1342. Number of Steps to Reduce a Number to Zero

2025. 9. 1. 22:38CS&알고리즘/Leet Code

문제

https://leetcode.com/problems/number-of-steps-to-reduce-a-number-to-zero

 

 

문제 내용 요약

  • 정수 num이 주어진다.
  • 목표: num을 0으로 줄이는 데 필요한 단계(step)의 수를 반환한다.
  • 단계 규칙:
    1. 현재 숫자가 짝수라면 → 2로 나눈다.
    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