본문 바로가기
Study/Coding test

10진수를 2진수로 변환하기

by 코드콩 2024. 11. 8.
728x90
반응형

문제 설명

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

제한사항

  • decimal은 1이상 10억 미만의 자연수

입출력 예

decimal 반환값
10 1010
27 11011
12345 11000000111001

 

코드

import java.util.Stack;

public class Solution {

    public static void main(String[] args) {
        System.out.println(solution(10));
        System.out.println(solution(27));
        System.out.println(solution(12345));
    }

    public static String solution(int decimal) {
        Stack<Integer> stack = new Stack<>();
        while (decimal > 0) {
            int remainder = decimal % 2;
            stack.push(remainder);
            decimal /= 2;
        }

        StringBuilder sb = new StringBuilder();
        while (!stack.isEmpty()) {
            sb.append(stack.pop());
        }

        return sb.toString();
    }

}

 

정리

10진수를 2진수 변환하는 방법은 링크를 참고 하세요.

https://dojang.io/mod/page/view.php?id=1760

 

COS Pro 2급 C 언어: 33.9 배열을 활용하여 10진수를 2진수로 변환하기

이번에는 배열을 응용해서 10진수를 2진수로 변환한 뒤 배열에 넣어보겠습니다. 그런데 10진수에서 2진수로는 어떻게 변환할까요? 방법은 간단합니다. 10진수를 0이 될 때까지 2로 계속 나눈 뒤 나

dojang.io

1. 십진수 13을 2진수로 변경한다고 하면 이것을 2로 나누고 나머지를 스택에 push 합니다. 13을 2로 나눈 나머지가 1이므로 1을 푸시 합니다.

2. 6을 2로 나눈 나머지는 0이므로 0을 푸시하고, 3을 2로 나눈 나머지는 1이므로 1을 푸시 합니다.

3. 몫이 0이 될때까지 나누면 스택에는 1, 0, 1, 1 쌓입니다.

4. 연산이 끝난 후 스택에서 팝하면 13을 이진수로 변환한 1 1 0 1 이 됩니다.

5. String의 + 연산자는 수행할때마다 객체를 새로 생성합니다. 따라서 문자열의 길이가 계속 길어지는 반복문 내에서는 Stringbuilder 사용하는 것이 좋습니다.

 

728x90
반응형