알고리즘 종류 : 재귀

이진수 변환

시간 제한메모리 제한제출정답맞은 사람정답 비율

시간제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 256 MB 3999 2054 1776 54.479%

문제

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

입력

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

출력

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

예제 입력 1 복사

53

예제 출력 1 복사

110101

 


#include <cstdio>
using namespace std;

void getBinary(long N) {
    if(N == 1) {
        printf("%ld", N % 2);
        return;
    }
    getBinary(N / 2);
    printf("%ld", N % 2);
}

int main()
{
    long N;
    scanf("%ld", &N);
    getBinary(N);

    return 0;
}

종료조건 없이 시도하고 싶다면

이렇게도 가능하다!

#include <cstdio>
using namespace std;

void getBinary(long N) {
    if(N != 0) {
        getBinary(N / 2);
        printf("%ld", N % 2);
    }
}

int main()
{
    long N;
    scanf("%ld", &N);
    getBinary(N);

    return 0;
}

 

시간 : 0ms

메모리 : 1116 KB

 

참고)

import java.util.Scanner;

public class Main{

     public static void main(String []args){
        Scanner sc = new Scanner(System.in);
        Long N = sc.nextLong();
        getBinary(N);
     }
     
     private static void getBinary(Long N) {
         if(N != 0) {
             getBinary(N/2);
             System.out.print(N%2);
         }
     }
}

출처

- 문제를 만든 사람: baekjoon

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

+ Recent posts