개발 일지
231. Power of Two (2의 거듭제곱) C# 본문
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.
정수 n가 주어지면 2의 거듭제곱이면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
n == 2^x에서 x가 정수인 경우 정수 n은 2의 거듭제곱입니다.
예시 1:
입력: n = 1
출력: true
설명: 2^0 = 1
예시 2:
입력: n = 16
출력: true
설명: 24 = 16
예시 3:
입력: n = 3
출력: false
조건:
- -2^31 <= n <= 2^31 - 1
Follow up: Could you solve it without loops/recursion?
후속 조치: 루프/재귀 없이 해결할 수 있습니까?
정답:
public class Solution {
List<int> list = new List<int>();
public bool IsPowerOfTwo(int n) {
int one = 0;
RevertBinary(n);
for(int i = 0; i < list.Count; i++)
{
one += list[i];
}
if(one == 1)
return true;
else
return false;
}
public void RevertBinary(int n)
{
while (n != 0)
{
list.Add(n % 2);
n /= 2;
}
}
}
해설: 2진법으로 변환하며 배열로 저장한 후 각 배열의 총합이 1일경우 true 아닐경우 false을 return한다.
수정 코드:
public class Solution {
int one = 0;
public bool IsPowerOfTwo(int n) {
RevertBinary(n);
if(one == 1)
return true;
else
return false;
}
public void RevertBinary(int n)
{
while (n != 0)
{
one += n % 2;
n /= 2;
}
}
}
해설: 위와 같지만 배열로 넣지 않고 바로 총합을 구하면 반복문을 두번 사용하지 않아도 풀 수 있다.
'코딩 테스트 > LeetCode' 카테고리의 다른 글
219. Contains Duplicate II (중복 포함 II) C# (0) | 2022.10.31 |
---|---|
1239. Maximum Length of a Concatenated String with Unique Characters (고유한 문자로 연결된 문자열의 최대 길이) C# (0) | 2022.10.25 |
38. Count and Say (세고 말하기) C# (0) | 2022.10.19 |
1832. Check if the Sentence Is Pangram (문장이 Pangram인지 확인하기) C# (0) | 2022.10.17 |
258. Add Digits (자릿수 더하기) C# (0) | 2022.10.11 |