본문 바로가기
baekjoon(Java)

[BOJ] 백준 10829 이진수 변환 (Java)

by bak_ssso 2022. 1. 8.

https://www.acmicpc.net/problem/10829

 

10829번: 이진수 변환

첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000,000,000,000)

www.acmicpc.net

 

문제

자연수 N이 주어진다. N을 이진수로 바꿔서 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000,000,000,000)

 

출력

N을 이진수로 바꿔서 출력한다. 이진수는 0으로 시작하면 안 된다.

 

성공코드
// 2022.01.08.토
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BOJ10829 {
    static StringBuilder sb = new StringBuilder();
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        long N = Long.parseLong(br.readLine());

        binary(N);

        String reverse = sb.reverse().toString();

        System.out.println(reverse);
    }

    public static void binary(long N) {
        sb.append(N % 2);
        if ( N / 2 == 0) {
        return;
        }
        binary(N / 2);
    }
}

 

Point

입력받는 정수의 범위에 주의해야 한다.

 

Review

이진수를 구하는 방법을 알고있다면 쉽게 풀 수 있는 문제. 나도 논리회로 강의에서 배웠던 내용이라서 쉽게 코드를 작성할 수 있었다. but,,, 정수 범위를 안보고 그냥 했더니 런타임에러 나서 당황,,, 입력받는 수와 binary 함수의 인자를 모두 long으로 바꾸니 쉽게 해결할 수 있었다. 조건 잘 읽기!

댓글