본문 바로가기

알고리즘 문제 풀이

Q3. powerOfTwo // 마지막 return 이해 안됨

 

 

================정답=====================

 

public class Solution { 
  public boolean powerOfTwo(long num) {
    /*
    num을 입력받아 2의 거듭제곱인지 여부 리턴.
    1. 짝수가 아니면 false
    2. 1,2 나오면 true
    3. while문 사용하기
    */
 
    boolean answer = true;
    long two = 2;
 
    < 2^0 == 1 이므로 true >
    if ( num == 1 ) {
      return answer;
    }
    < 2의 제곱근들은 모두 짝수이므로 >
    if ( num % 2 != 0) {
      return false;
    }
    < 입력받을 num이 2보다 클 경우에만 반복문 실행되며,
       반복문이 실행될동안 2를 계속 곱해서 2의 제곱근을 만든다 >
 
    long two = 2;
    while ( two < num) {
      two = two * 2;
    }
    < 2의 제곱근으로만 만들어진 two가 입력받을 num이랑 같으면 제곱근이다.>
 
    return two == num;
  } 
}
 
메소드 자체가 boolean 형이라 답은 true가 될 것이다.
하지만, return two == num; 가 왜 나온건지 이해가 안된다.
two는 while문 안에서 2의 제곱근으로만 연산된것이라 2의 제곱근인건 이해되는데
return two == num; 이라는게 갑자기 왜, 어떻게 나온건지 이해가 안된다. // 2022.11.27