주어진 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;
}
}