[알고리즘]/백준

백준 2089 자바 - -2진수

broship 2021. 7. 5. 07:39

문제


 

 

문제해결


- 2진수를 구하는 것과 똑같이 구하되 나머지 연산은 -2로 하고 나누기 연산은 ceil을 통해 올림 연산을 한다

import java.util.Scanner;
// -2진수
public class B2089 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        StringBuilder sb = new StringBuilder();
        if (n==0)
            System.out.println(0);
        else {
            while (n!=1){
                //기존 2진수 구하는 방법
//                sb.append(n%2);
//                n /= 2;
                //-2진수 구하는 방법
                sb.append(Math.abs(n%-2));
                n = (int)Math.ceil((double)n/(-2));
            }
            sb.append(n);
        }
        System.out.println(sb.reverse());
    }
}