Algorithm
창작문제
2진수 변환

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());
	}
}