2진수 변환
문제 설명
10진수를 입력받아 2진수로 변환하는 프로그램을 작성하시오.
10 👉 1010
27 👉 11011
12345 👉 11000000111001
풀이
2진수 변환 원리를 알면쉬운데 난 항상 2진수를 변환할 때 자리수를 가지고 10진수로 변환하는 것밖에 안하다보니 이 문제를 풀 때 어려움을 겪었다.
더 이상 나눠지지 않을 때까지 (1이 될 때까지) 나누고 나눌 때 그 몫을 계속해서 stack에 넣고 stack에서 값을 하나씩 빼내주면 stack은 FILO의 특성을 갖기 때문에 2진수로 변환된 값을 얻을 수 있다.
import java.util.*;
public class Main {
public static void main(String[] args) {
Main main = new Main();
main.solution(10);
main.solution(27);
main.solution(12345);
}
public void solution(int decimal) {
Stack<Integer> stack = new Stack<Integer>();
while(decimal > 0) {
int remainder = decimal % 2;
stack.push(remainder);
decimal /= 2;
}
StringBuilder sb = new StringBuilder();
while(!stack.isEmpty()) {
sb.append(stack.pop());
}
System.out.println(sb.toString());
}
}