이진수 출력
2022. 4. 21. 17:43ㆍ코딩 테스트(JAVA)/인프런 문제풀이
10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요.
단 재귀 함수를 이용해서 출력해야 합니다.
▣ 입력 설명
첫 번째 줄에 10진수 N(1 <=N <=1,000)이 주어집니다.
▣ 출력설명
첫 번째 줄에 이진수를 출력하세요.
▣ 입력예제
11
▣ 출력예제
1011
진수 변환의 경우 제가 이전에 정리해둔 포스팅이 있습니다.
재귀 함수가 아닌 메서드를 활용해서 변환하는 방법을 알고 싶으신 분들은 아래 포스팅을 참고하시면 도움이 될 것 같습니다.
이 강에서는 재귀 함수를 통해 이진수 출력을 구현해 볼 텐데요, 저번 포스팅을 잘 이해하셨다면 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);
}
}
저번 포스팅에서 처럼 출력 함수를 재귀 함수 밑에 두었는데요, 이 또한 그림으로 설명하면서 이해해보도록 하겠습니다.
그림에 대한 설명은 저번 포스팅으로 대체하도록 하겠습니다. (완전 일치합니다.)
이처럼 재귀 함수를 통해 거꾸로 출력받을 수 있구나 정도로 이해하시면서,
중요한 것은
스택 프레임의 동작원리와 if ~ else문을 활용한 재귀 함수 구현임을 기억하시면 알고리즘을 푸실 때 도움이 되실 것 같습니다.
'코딩 테스트(JAVA) > 인프런 문제풀이' 카테고리의 다른 글
피보나치 수열(재귀함수 이용) (0) | 2022.04.24 |
---|---|
팩토리얼 (0) | 2022.04.24 |
재귀함수(스택프레임) (0) | 2022.04.21 |
💡 이진트리 순회(DFS : 깊이우선탐색, Depth-First Search) (0) | 2022.04.20 |
원더랜드(최소스패닝트리 : 프림, PriorityQueue) (0) | 2022.04.08 |