https://www.acmicpc.net/problem/2089
2089번: -2진수
-2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 110
www.acmicpc.net
해석 및 팁
이 문제는 기존의 2진수 변환법이랑 비슷하지만 나머지를 양수로 만들어주여야 합니다. 예를 들어 n = -13이면 몫은 7이고 나머지가 1입니다. -2로 나누어 떨어지면 0을 더 해주면 되고 나누어 떨어지지 않으면 1을 더하고 -1을 빼고 -2로 나누어주면 됩니다.
Java 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int n = sc.nextInt();
if(n == 0) sb.append(0);
else {
while(n != 0) {
if(n % -2 == 0) {
sb.append(0);
n /= -2;
}
else {
sb.append(1);
n = (n - 1) / -2;
}
}
}
sb.reverse();
System.out.println(sb);
}
}
'백준' 카테고리의 다른 글
백준 18310 안테나(Java) (0) | 2023.02.04 |
---|---|
백준 11441 합 구하기(Java) (0) | 2023.02.04 |
백준 4375 1(Java) (0) | 2023.02.04 |
백준 2346 풍선 터뜨리기(Java) (0) | 2023.02.04 |
백준 1783 병든 나이트(Java) (0) | 2023.02.04 |