본문 바로가기
Computer Science/알고리즘

leetcode 231) Power of Two

by eeeun:) 2022. 1. 5.
반응형

LV. Easy 😎

https://leetcode.com/problems/power-of-two/

 

Power of Two - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

문제

Given an integer n, return true if it is a power of two. Otherwise, return false.

An integer n is a power of two, if there exists an integer x such that n == 2x.

 

Example 1:

Input: n = 1
Output: true
Explanation: 20 = 1

Example 2:

Input: n = 16
Output: true
Explanation: 24 = 16

Example 3:

Input: n = 3
Output: false

 

Constraints:

  • -2^31 <= n <= 2^31 - 1

 

문제 해결법

n의 범위는 int의 범위와 동일 -> int는 4바이트 = 2^32

그러므로 n의 데이터형은 int로도 가능!

 

n이 1이 될 때까지 계속 2로 나눈다 <- int의 범위이기 때문에 제일 큰 수를 나눠봤자 31번밖에 안 돌리기 때문에 runtime은 신경 쓰지 않아도 됨!!

n을 2로 나눌 때 나머지가 1이 나오는 순간 2의 제곱근이 아니므로 false를 return

n이 1이 될 때까지 나머지가 0이면 2의 제곱근이므로 true를 return

 

해결 코드
class Solution {
public:
	bool isPowerOfTwo(int n) {
		//나머지 저장
		int rest;

		// 음수값은 무조건 false
		if (n < 0)
			return false;
		// 0과 1은 특수 케이스로 빼줌
		if (n <= 1)
			return n;

		while (n != 1) {
			rest = n % 2;
			// 중간에 2로 나눠떨어지지 못한 경우 false
			if (rest == 1)
				return false;
			n = n / 2;
		}
		return true;
	}
};

728x90

'Computer Science > 알고리즘' 카테고리의 다른 글

leetcode 382) Linked List Random Node  (0) 2022.01.08
leetcode 143) Reorder List  (0) 2022.01.06
leetcode 416) Partition Equal Subset Sum  (0) 2022.01.04
leetcode 221) Maximal Square  (0) 2022.01.04
leetcode 878) Nth Magical Number  (0) 2022.01.03

댓글