이진수 출력
10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요.
단 재귀 함수를 이용해서 출력해야 합니다.
▣ 입력 설명
첫 번째 줄에 10진수 N(1 <=N <=1,000)이 주어집니다.
▣ 출력설명
첫 번째 줄에 이진수를 출력하세요.
▣ 입력예제
11
▣ 출력예제
1011
진수 변환의 경우 제가 이전에 정리해둔 포스팅이 있습니다.
재귀 함수가 아닌 메서드를 활용해서 변환하는 방법을 알고 싶으신 분들은 아래 포스팅을 참고하시면 도움이 될 것 같습니다.
💡 10진수 ↔ 2진수, 8진수, 16진수 변환 방법
백준 문제를 풀면서 꼭 알고 넘어가야 할 개념이 생겨서 이 글을 포스팅하게 되었습니다. 예제를 통해 이해한 후 이진수 문제로 넘어가서 풀어보는 것도 좋을 것 같습니다. [백준 3460번] 이진수 [
lealea.tistory.com
이 강에서는 재귀 함수를 통해 이진수 출력을 구현해 볼 텐데요, 저번 포스팅을 잘 이해하셨다면 1분 만에 바로 풀 수 있습니다.
💡 재귀함수 문제는 if ~ else문을 활용하면 거의 풀이할 수 있습니다.
입력받은 n이 0이 되면 return 하며, 그전까지는 2로 나눈 나머지를 출력하면 됩니다.
여기서 출력 함수의 위치에 따라 어떤 결과가 나오는지 같이 알아보도록 하겠습니다.
public class Conversion {
public void DFS(int n) {
if(n == 0) return;
else {
// System.out.print(n + " "); 11 5 2 1..몫을 출력
// System.out.print(n%2+ " "); 1 1 0 1
DFS(n/2);
System.out.print(n%2+ " "); // 우리가 원하는 출력 모습 : 1 0 1 1
}
}
public static void main(String[] args) {
Conversion T = new Conversion();
T.DFS(11);
}
}
저번 포스팅에서 처럼 출력 함수를 재귀 함수 밑에 두었는데요, 이 또한 그림으로 설명하면서 이해해보도록 하겠습니다.
그림에 대한 설명은 저번 포스팅으로 대체하도록 하겠습니다. (완전 일치합니다.)
재귀함수(스택프레임)
재귀 함수 자연수 N이 입력되면 재귀 함수를 이용하여 1부터 N까지를 출력하는 프로그램을 작성하세요. ▣ 입력 설명 첫 번째 줄은 정수 N(3 <=N <=10)이 입력된다. ▣ 출력설명 첫째 줄에 출력한다.
lealea.tistory.com
이처럼 재귀 함수를 통해 거꾸로 출력받을 수 있구나 정도로 이해하시면서,
중요한 것은
스택 프레임의 동작원리와 if ~ else문을 활용한 재귀 함수 구현임을 기억하시면 알고리즘을 푸실 때 도움이 되실 것 같습니다.