Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- MySQL
- 버블정렬
- List.of
- 인텔리제이
- 클라우드에서 도커 실행하기
- 재귀함수
- vm인스턴스생성
- 자바
- Spring MVC 동작원리
- GCP
- 알고리즘
- 코딩테스트
- 백준
- Spring Web MVC
- 투포인터알고리즘
- 성능테스트툴
- java
- String.valueOf()
- 코드스테이츠 백엔드
- 백준 11659
- 재귀와반복문
- 싱글톤패턴
- OOP
- 구간합구하기
- Array.asList
- 프로그래머스
- 스택
- Spring MVC 구성요소
- 11659
- 코드스테이츠
Archives
- Today
- Total
순간을 기록으로
[Java] 이진수 출력 | 인프런 | 재귀 본문
문제
10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요. 단 재귀함수를 이용해야 합니다.
풀이
십진수를 이진수로 바꾸는 방법은 N을 2로 계속나누면서 몫과 나머지를 구하면 됩니다. 그리고 몫이 0이 될 때 구했던 나머지를 역순으로 붙이면 구하는 이진수가 나오게 됩니다.
위의 십진수 69를 계속 나눕니다. 그리고 몫이 0이 되면 지금까지 구한 이진수를 역순으로 이어붙입니다.
따라서 십진수 69의 이진수는 1000101이 됩니다.
이번 문제도 재귀함수를 이용하기 때문이 if-else 구조를 이용해서 문제를 풀겠습니다.
package 인프런.재귀와트리와그래프.이진수출력.방법1;
import java.util.Scanner;
public class Main {
static StringBuilder sb = new StringBuilder();
public void recursive(int n) {
if (n == 0) { // 몫이 0이라면
return;
}
else {
recursive(n/2);
sb.append(n % 2); // 이어 붙이기
}
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
T.recursive(n);
System.out.println(sb.toString());
}
}
'Problem Solving' 카테고리의 다른 글
[Java] 피보나치 수열 출력하기 | 인프런 | 단순 재귀 와 메모이제이션 방식 (0) | 2022.04.21 |
---|---|
[Java] 팩토리얼 값 구하기 | 인프런 | 재귀 (0) | 2022.04.21 |
[Java] 재귀함수 | 인프런 | 재귀문제 (0) | 2022.04.21 |
[MySQL] Chemistry and Physics last | SQLZOO (0) | 2022.04.21 |
[MySQL] 문자열 안에 '(single quote) 있을 때 탈출하는 법 (0) | 2022.04.21 |
Comments