코딩 테스트(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();
}