코딩 테스트(Coding Test)/이것이 코딩 테스트다

문제 09) 10진수를 2진수로 변환하기

배씌 2024. 10. 10. 23:43

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

 

제약조건

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

 

입출력의 예

decimal 반환값
10 1010
27 11011
12345 11000000111001

아이디어

2진수 변환은 decimal 수를 2로 계속 나누어 나머지를 뒤에서 부터 읽으면 된다. 따라서 string으로 나머지를 붙이면서 적어가되, string 연산은 시간복잡도가 커지므로 StringBuilder를 이용했다. 그러나, 위 문제도 스택을 활용하는 문제이니 우선 내 코드부터 기록하고 정답코드를 보겠다.

private static String solution(int n){
        StringBuilder sb = new StringBuilder();

        while(n > 0){
            sb.append(n%2);
            n/=2;
        }
        return sb.reverse().toString();
    }

정답 코드

사실 이 문제는 내 방법대로 해도 크게 차이 없을 듯 하다.

private static String solution2(int n){
        Stack<Integer> st = new Stack<>();
        while(n > 0){
            int remainder = n % 2;
            st.push(remainder);
            n/=2;
        }

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

        return sb.toString();
    }