코딩테스트

[코테/java] 10진수를 2진수로 변환하기

_채채_ 2026. 2. 2. 01:45

문제

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

 

[제약조건]

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

 

풀이 과정

1. 10진수 N을 2로 나누고 몫은 홀드하고 나머지는 저장한다.

2. 앞에서 나눈 결과값인 목이 0이 아니라면 1번을 다시 반복한다.

3. 몫이 0이 될 때까지 나눴다면 1번에서 저장한 수를 최근 계산한 것부터 순서대로 나열한다.

 

정답 코드

import java.util.Stack;

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

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

이때 왜 StringBuilder를 사용하는 이유는...사실 String + 연산을 사용해도 풀이가 가능하지만 그렇게 풀이한다면

String s ="";
s += "1";
s += "0";
s += "1";

 

이런식으로 매번 새로운 String 객체를 생성해야 한다. 따라서 성능적인 측면에서 반복문에서는 StringBuilder를 사용한 코드가 더 효율적이다.

 

[문제 출처]

https://product.kyobobook.co.kr/detail/S000212576322

 

코딩 테스트 합격자 되기: 자바 편 | 김희성 - 교보문고

코딩 테스트 합격자 되기: 자바 편 | ★ 코딩 테스트 합격자가 되는 가장 확실한 방법! ★ 프로그래머스 제공, 전문가가 모여 엄선한 빈출 97문제로 철저하게 대비하세요! 신입 사원 코딩 테스트

product.kyobobook.co.kr