코린이의 소소한 공부노트

[LeetCode/Easy] 693. Binary Number with Alternating Bits 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 693. Binary Number with Alternating Bits

무지맘 2022. 12. 5. 00:04

1. Input

1) 양의 정수 n

 

2. Output

1) n2진수로 변환했을 때 01이 번갈아가며 나오면 true, 아니면 false를 반환

 

3. Constraint

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

 

4. Example

Input: n=5 -> Output: true

Input: n=7 -> Output: false

설명:

- 5 = 101(2)이므로 true를 반환한다.

- 7 = 111(2)이므로 false를 반환한다.

 

5. Code

1) 첫 코드(2022/07/06)

String s = Integer.toBinaryString(n);

for(int i=0 ; i<s.length()-1 ; i++)
    if(s.charAt(i)==s.charAt(i+1))
        return false;
        
return true;

2) 다시 풀어본 코드(2022/12/05)

int prev = n%2;
n /= 2;
boolean answer = true;
while(n>0){
    if(n%2!=prev){
        prev = n%2;
        n /= 2;
    } else{
        answer = false;
        break;
    }
}
return answer;

  - 1번에 비해 빠르고 공간 절약도 많이 했다.