문제 해결 과정
이 문제는 재귀 함수호출을 이용하여 구현하였다.
재귀함수란
자신이 수행할 작업을 유사한 형태의 여러 조각으로 쪼갠 두 ㅣ그 중 한조각을 수행하고, 나머지를 자기 자신을 호출해 실행하는 함수를 가르킨다.
이 문제에서의 재귀함수는 Binary() 함수로 구현하였다.
N을 이진수로 바꾸는 작업을 N개의 조각으로 쪼개, 이진수를 구성하는 각 숫자가 하나의 조각이 되도록 한다.
만약 N이 1보다 작을 경우 2로 나눌 수 없기 때문에 종료하고,
그 외의 경우 재귀함수(자기자신)을 호출한다. 이때 재귀함수에는 N을 2로 나눈 N/2값이 들어가야 한다.
그리고나서 출력값으로는 N을 2로 나눈 나머지를 출력한다.
메인 함수에서는 Binary()함수를 호출하여 이진수가 출력되도록 한다.
이렇게 A,B값의 규칙성을 찾았고 이를 수식으로 표현하여 코드를 구현하였다
import java.util.Scanner;
public class Main{
private static void Binary(long N) {
if(N<=1)
{ System.out.print(N);
return;}
Binary(N/2);
System.out.print(N%2);
}
public static void main(String[] args) throws Exception{
Scanner scan = new Scanner(System.in);
long N = scan.nextLong();
Binary(N);
scan.close();
}
}
작년 알고리즘 수업 때, 재귀함수를 거의 초반부분에 배워서 계속해서 써먹었던 것이 재귀함수였다.
이 문제는 재귀함수를 기초적으로 활용할 수 있는 문제여서 쉽게 풀 수 있었다.