순간을 기록으로

[Java] 이진수 출력 | 인프런 | 재귀 본문

Problem Solving

[Java] 이진수 출력 | 인프런 | 재귀

luminous13 2022. 4. 21. 14:41

문제

10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요. 단 재귀함수를 이용해야 합니다.

 

풀이

십진수를 이진수로 바꾸는 방법은 N을 2로 계속나누면서 몫과 나머지를 구하면 됩니다. 그리고 몫이 0이 될 때 구했던 나머지를 역순으로 붙이면 구하는 이진수가 나오게 됩니다.

 

 

위의 십진수 69를 계속 나눕니다. 그리고 몫이 0이 되면 지금까지 구한 이진수를 역순으로 이어붙입니다.

따라서 십진수 69의 이진수는 1000101이 됩니다.

 

이번 문제도 재귀함수를 이용하기 때문이 if-else 구조를 이용해서 문제를 풀겠습니다.

package 인프런.재귀와트리와그래프.이진수출력.방법1;

import java.util.Scanner;

public class Main {

    static StringBuilder sb = new StringBuilder();

    public void recursive(int n) {
        if (n == 0) {	// 몫이 0이라면
            return;
        }
        else {
            recursive(n/2);
            sb.append(n % 2);	// 이어 붙이기
        }
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();

        T.recursive(n);
        System.out.println(sb.toString());
    }
}
Comments