Number of Steps to Reduce a Number to Zero

Nak.s·2023년 1월 4일
0

CodeTest

목록 보기
4/19

주어진 N에 대해 짝수라면 2로 나누고,
홀수라면 1을 나누는 작업을 반복하여 0으로 만들고,
그 작업 횟수를 반환한다.

첫번째 풀이

class Solution {
    public int numberOfSteps(int num) {
        if(num == 0) return 0;
        int result = num;
        int count = 0;
        while(true){
            count++;
            result = isOddOrEven(result);
            if(result == 0) break;
        }
        return count;
    }

    private int isOddOrEven(int num){
        if(num % 2 == 0){
            return num / 2;
        }
        return num - 1;
    }
}코드를 입력하세요

두번째 풀이
isOddOrEven() 이라는 함수내부의 코드가
num = (num % 2 == 0) ? (num / 2) : (num - 1); 한줄로 해결됨
메모리적으로 이득을 볼 수 있음을 알 수 있었다.

class Solution {
    public int numberOfSteps(int num) {
        int count = 0;
        while(num != 0){
            num = (num % 2 == 0) ? (num / 2) : (num - 1);
            ++count;
        }
        return count;
    }
}
profile
궁금함이 많은 개발자

0개의 댓글