JAVA/알고리즘

2진수 변환 (반복문, 재귀함수)

lovineff 2021. 6. 9. 10:28

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

▣ 입력설명
첫 번째 줄에 10진수 N(1<=N<=1,000)이 주어집니다.
▣ 출력설명
첫 번째 줄에 이진수를 출력하세요.
▣ 입력예제 1
11
▣ 출력예제 1
1011

public static void main(String[] args) {
    int N = 11; // 10진수

    String s = solutionByIterator(N);
    System.out.println("solutionByIterator : " + s);

    String result = "";
    result = solutionByDFS(N, result);
    System.out.println("solutionByDFS : " + result);
}


private static String solutionByIterator(int n) {
    StringBuilder sb = new StringBuilder();
    boolean isEnd = false;

    int temp = n;
    while(!isEnd){
        sb.insert(0, temp % 2); // 2진수로 변환, 맨 앞에 값을 입력하여 기존 값을 한칸씩 뒤로 미룬다.
        temp = temp / 2;    // 다음 계산에선 몫을 사용한다.

        if(temp == 0){
            isEnd = true;
        }
    }

    return sb.toString();
}

private static String solutionByDFS(int n, String result){
    if(n == 0){
        return result;
    }

    return solutionByDFS(n/2, String.valueOf(n % 2) + result);
}

 

'JAVA > 알고리즘' 카테고리의 다른 글

피보나치 수열 (반복문, DFS)  (0) 2021.06.09
팩토리얼 (반복문, DFS)  (0) 2021.06.09
자연수 출력 (반복문, 재귀함수)  (0) 2021.06.09
이진탐색  (0) 2021.06.08
좌표정렬  (0) 2021.06.08