================정답=====================
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
'알고리즘 문제 풀이' 카테고리의 다른 글
<알고리즘 Q1 - Greedy> 짐 나르기 // 답변 외움. (0) | 2022.11.27 |
---|---|
Q5. firstReverse (0) | 2022.11.27 |
Q4. firstCharacter (0) | 2022.11.27 |
Q7. convertListToObject // (!map.containsKey) 이해함 (0) | 2022.11.26 |
Q6. letterCapitalize // uppercase와 substring 의 사용 이해 완료 (0) | 2022.11.25 |