728x90
난이도 - 브론즈 2
문제
8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.
입력
첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.
출력
첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.
728x90
8진수를 2진수로 바꾸는 방법은 8진수의 각 숫자를 3비트의 이진수로 변환하여 순서대로 붙이는 것이다.
314로 예를 들면
3 => 011
1 => 001
4 => 100
최종적으로 2진수 값은 011001100이 된다.
입력값이 0인 경우에는 0을 바로 출력하고 0이 아닌 경우에는 8진수를 2진수로 바꾸는 octalToBinary 함수를 호출한다.
8진수의 각 숫자에 해당하는 2진수 비트를 octalDigitToBinary 함수로 받아낸다. 출력값의 앞에 0이 붙어있으면 안되므로 첫번째 8진수 값은 octalDigitToBinaryFirst 함수로 2진수로 변환한다.
import java.io.*;
public class Main1212 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String N = br.readLine();
if (N.equals("0")) {
bw.write("0");
} else {
bw.write(octalToBinary(N));
}
bw.flush();
br.close();
bw.close();
}
static String octalToBinary(String octal) {
StringBuffer binary = new StringBuffer();
binary.append(octalDigitToBinaryFIrst(octal.charAt(0)));
for (int i = 1; i < octal.length(); i++) {
binary.append(octalDigitToBinary(octal.charAt(i)));
}
return binary.toString();
}
static String octalDigitToBinary(char c) {
switch (c) {
case '0':
return "000";
case '1':
return "001";
case '2':
return "010";
case '3':
return "011";
case '4':
return "100";
case '5':
return "101";
case '6':
return "110";
case '7':
return "111";
default:
return "";
}
}
static String octalDigitToBinaryFIrst(char c) {
switch (c) {
case '0':
return "";
case '1':
return "1";
case '2':
return "10";
case '3':
return "11";
case '4':
return "100";
case '5':
return "101";
case '6':
return "110";
case '7':
return "111";
default:
return "";
}
}
}
728x90
'백준 > Java' 카테고리의 다른 글
[백준 자바] 14915번(진수 변환기) - 10진수를 n진수로 바꾸기 (1) | 2024.06.19 |
---|---|
[백준 자바] 1373번(2진수 8진수), 2998번(8진수) - 2진수를 8진수로 바꾸기 (0) | 2024.06.19 |
[백준 자바] 1110번(더하기 사이클) (0) | 2024.06.18 |
[백준 자바] 13410번(거꾸로 구구단) - 정수 뒤집기 (0) | 2024.06.18 |
[백준 자바] 별 찍기 시리즈(8~9) - 2445, 2446번 (0) | 2024.06.14 |