문제 설명
10진수를 입력받아 2진수로 변환해 반환하는 solution() 함수를 구현하세요.
- 제약 조건 : 입력값(decimal)은 1이상 10억 미만의 자연수
decimal |
반환값 |
10 |
1010 |
27 |
11011 |
12345 |
11000000111001 |
문제 해결
10진수를 2진수로 표현하기 위해서는
- 10진수 N을 2로 나눈 나머지 한 값을 저장하고 N은 2로 나눔
- 몫이 0이 아니라면 나머지는 stack에 저장하고 다시 1번을 수행
- 모든 과정이 끝나면 stack에 저장한 값을 순서대로 가져와 붙이기
13을 2진수로 변환한다면... |
 |
import java.util.Stack;
public class Java09 {
public static void main(String[] args) {
System.out.println("10진수 : 10 -> 2진수 : " + solution(10));
System.out.println("10진수 : 27 -> 2진수 : " + solution(27));
System.out.println("10진수 : 12345 -> 2진수 : " + solution(12345));
}
public static String solution(int decimal) {
Stack<Integer> stack = new Stack<>();
// String의 + 연산자는 수행할 때마다 객체를 새로 생성 하므로
// StringBuilder를 사용하는 것이 바람직
StringBuilder sb = new StringBuilder(); // O(logN)
while (decimal > 0) {
int a = decimal % 2; //나머지
decimal /= 2;//몫
stack.push(a);
}
while (!stack.isEmpty()) {
sb.append(stack.pop());
}
return sb.toString();
}
}
결과 |
 |