[ etc ] #9 : 10진수를 2진수로 변환하기 - JAVA

문제 설명

10진수를 입력받아 2진수로 변환해 반환하는 solution() 함수를 구현하세요.

  • 제약 조건 : 입력값(decimal)은 1이상 10억 미만의 자연수
decimal 반환값
10 1010
27 11011
12345 11000000111001

문제 해결

10진수를 2진수로 표현하기 위해서는

  1. 10진수 N을 2로 나눈 나머지 한 값을 저장하고 N은 2로 나눔
  2. 몫이 0이 아니라면 나머지는 stack에 저장하고 다시 1번을 수행
  3. 모든 과정이 끝나면 stack에 저장한 값을 순서대로 가져와 붙이기
13을 2진수로 변환한다면...
image
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();
    }
}
결과
image