백준 24389번: 2의 보수

최창효·2022년 8월 26일
0
post-thumbnail

문제 설명

접근법

  • ~N: N의 비트를 반전
  • Integer.toBinaryString(N): 숫자를 2진수로 표현한 문자열로 변환
  • 32비트로 표현하기: 앞에 부족한 숫자를 0으로 채우면 됨

정답

import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		String B_N = toBinary(N);

		int flipBit = ~N;
		int plusOne = flipBit+1;
		String B_plusOne = toBinary(plusOne);
		
		int cnt = 0;
		for (int i = 0; i < 32; i++) {
			String a = Convert32bit(B_N);
			String b = Convert32bit(B_plusOne);
			if(a.charAt(i) != b.charAt(i)) cnt++;
		}
		System.out.println(cnt);
	}
	
	public static String Convert32bit(String temp) {
		int N = 32 - temp.length();
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < N; i++) {
			sb.append("0");
		}
		sb.append(temp);
		return sb.toString();
	}
	
	public static String toBinary(int num) {
		return Integer.toBinaryString(num);
	}
}
profile
기록하고 정리하는 걸 좋아하는 개발자.

0개의 댓글