SEB/Daily Coding
[DailyCoding] 03 | powerOfTwo
kexon
2022. 7. 26. 01:49
✍🏻 Description
- 2의 거듭제곱 여부 판단
- 거듭제곱: 같은 수를 거듭하여 곱함 ⇒ 주어진 수를 주어진 횟수만큼 반복
📝 Flow
- 2의 거듭제곱?
2의 0승 == 1
2 * 2 = 4
2 * 2 * 2 = 8
2 * 2 * 2 * 2 = 16
2 * 2 * 2 * 2 * 2 = 32
- 짝수라고 다 거듭제곱은 아님 => 6, 10 이런거
6 = 2 * 3
10 = 2 * 5
- 로직흐름: 2로 나눈 나머지는 다 0?
초기값: 8
| 몫 | 나머지
1회차 | 4 | 0
2회차 | 2 | 0
초기값: 10
| 몫 | 나머지
1회차 | 5 | 0
2회차 | 2 | 1
초기값: 7
| 몫 | 나머지
1회차 | 3 | 1
2회차 | 1 | 1
=> 나머지가 1이 하나라도 있으면 거듭제곱 X
=> 모두 0이면 거듭제곱!!!
🤯 Difficulty
- 거듭제곱의 정확한 정의를 몰랐음
- 짝수라고 다 거듭제곱이 아님
- 2의 0승을 0으로 착각 (...)
🪆 Attempt
- 거듭제곱 검색
- 손으로 직접 그려보면서 흐름 파악
📚 TIL
- 거듭제곱이 무엇인지 알게 됨
👩🏻💻 Implementation
if(num == 2) return true;
while(num > 2) {
num /= 2;
long rest = num % 2;
if(rest == 1) return false;
}
return true;