코딩테스트

[재귀함수] 2. 이진수 출력

개발하는지호 2024. 1. 26. 21:33

 

<<풀이>>

 

-강사님 풀이-

 

강사님은 콘솔하여 구했다. 원리는 재귀함수이고 이 역시 스택에 쌓이다가 조건에 의해 끝이나면 돌아가면서 진행을 마무리한다.

import java.util.*;

class Main {
    private void DFS(int n) {
        if(n == 0) return;
        else {
            DFS(n / 2);
            System.out.print(n % 2 + " ");
        }
    }

    public static void main(String[] args) {
        Main T = new Main();
        T.DFS(11);
    }
}

 

 

-나의 풀이-

나는 String으로 반환

import java.util.Scanner;

class Main {
    private String DFS(int n) {
        if (n == 0) {
            return ""; // 0일 때 빈 문자열 반환
        } else {
            return DFS(n / 2) + (n % 2); // 현재 이진수 자릿수 추가 후 재귀 호출
        }
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        if (n == 0) {
            System.out.println("0"); // 입력값이 0인 경우 바로 0 출력
        } else {
            System.out.println(T.DFS(n)); // 재귀 함수 호출
        }
    }
}