📌 문제 설명
10진수 N이 주어졌을 때, 재귀함수를 이용해 이 수를 이진수로 출력하는 프로그램을 작성하시오.
단, Integer.toBinaryString() 같은 내장 함수는 사용하지 않는다.
📝 입력 & 출력
입력
- 첫 줄에 자연수 N이 주어진다.
- (1 ≤ N ≤ 1,000)
출력
- 재귀를 통해 N을 2진수로 변환하여 출력한다.
🔹 예제 입력 & 출력
예제 입력
11
예제 출력
1011
💡 해결 방법
10진수를 2진수로 변환하는 방식은 아래와 같다:
- N을 2로 나눈 몫을 재귀적으로 나누고,
- 나머지를 출력하면 가장 앞자리부터 2진수가 출력된다.
즉, N을 계속 2로 나누면서 DFS 깊이 들어가다가,
가장 작은 N까지 간 다음 재귀가 빠져나오면서 역순으로 나머지들이 출력됨.
💻 코드 구현 (Java)
package partRecursiveTreeGraph;
public class Problem2 {
public void DFS(int n) {
if (n == 0) return;
else {
DFS(n / 2); // 몫을 재귀적으로 나눔
System.out.print(n % 2); // 나머지를 출력
}
}
public static void main(String[] args) {
Problem2 T = new Problem2();
T.DFS(11); // 예제 테스트
}
}
📖 코드 설명
1️⃣ 종료 조건
if (n == 0) return;
; - N이 0이 되면 재귀 종료 (더 이상 나눌 수 없음)
2️⃣ 재귀 호출
DFS(n / 2);
- 몫을 재귀적으로 나누며 맨 앞 자리부터 먼저 도달
3️⃣ 출력
System.out.print(n % 2);
- 재귀 함수가 되돌아오면서 나머지를 출력
- 즉, 가장 앞자리부터 순서대로 출력됨
⏳ 시간 복잡도 분석
- 시간 복잡도: O(log N)
→ 2로 계속 나누기 때문에 최대 약 log₂(N) 번 호출됨
🧠 핵심 정리
- 재귀를 활용해 2진수 변환 시 → “먼저 몫 나눈 다음, 나머지 출력” 순서
- System.out.print(n % 2) 를 재귀 호출 이후에 실행해야 순서 맞게 출력됨
- 반복문 없이도, 재귀로 깔끔하게 2진수 변환 가능함
출처: 인프런 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
https://www.inflearn.com/course/자바-알고리즘-문제풀이-코테대비/dashboard
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 강의 | 김태원 - 인프런
김태원 | , 자바(Java) 알고리즘 문제풀이 채점사이트를 통해 기초부터 준비해보세요! 💪 [사진] 이 강의는 [사진] 자바(Java)로 코딩테스트 준비를 하고 계신 분께 추천드려요! 문제는 기초~ 중급
www.inflearn.com
'코딩테스트 > 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비' 카테고리의 다른 글
| 섹션 7 Recursive, Tree, Graph - 5. 이진트리 순회(깊이우선탐색) (0) | 2025.04.28 |
|---|---|
| 섹션 7 Recursive, Tree, Graph - 4. 피보나치 수열 (0) | 2025.04.27 |
| 섹션6. Sort - 10. 마구간 정하기(결정알고리즘) (0) | 2025.04.26 |
| 섹션6. Sort - 9. 뮤직비디오(결정알고리즘) (0) | 2025.04.25 |
| 섹션6. Sort - 8. 이분검색 (2) | 2025.04.24 |