백준 문제풀이

2089. -2진수 (자바, Java)

뮤츠 2022. 11. 22. 22:20

이 문제 꽤나 어렵게 느껴졌다. 일단 -2진수 자체가 너무 괴리감이 느껴짐. 결국 풀이를 참조함.

나머지가 -1인 경우, 1인경우를 각각 나누어 계산했다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		StringBuilder sb = new StringBuilder();
		if (n==0) {
			System.out.println(0);
		} else {
			while (n!=0) {
				if (n%-2==0) {
					sb.insert(0, "0");
					n/=-2;
				} else if (n%-2==1) {
					sb.insert(0, "1");
					n/=-2;
				} else if (n%2==-1) {
					sb.insert(0, "1");
					n = n/-2 + 1;
				}
			}
			System.out.println(sb);
		}
	}	
}