문제설명
소스코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main
{
public static void main(String[] args) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String input = br.readLine();
String[] arr = {"000","001","010","011","100","101","110","111"};
for(int i = 0; i < input.length(); ++i)
{
int tmp = input.charAt(i) - '0'; //'0'의 아스키코드 값은 48, 이렇게하면 원하는 정수를 얻을 수 있음
sb.append(arr[tmp]);
}
if (input.equals("0")) System.out.print(0);
else
{
while(sb.charAt(0) == '0') sb = new StringBuilder(sb.substring(1)); //0이 없어질때까지 0을 제거
System.out.println(sb);
}
}
}
설명
- 8진수를 2진수로 바꾸려면 아래와 같은 과정을 거친다.
314 : 3->011, 1->001, 4->100
합치면 011001100 - 맨 앞의 수가 0이면 제거해줘야한다.
즉, 11001100이어야 한다.
만약 001100000 이런 이진수는 앞의 두 개의 0을 제거해줘야한다. - 0의 값이 들어오면 000이 출력되는 것이 아니라 0이 출력되어야 한다.
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[Java] 백준 16916번 문제 (부분 문자열) (0) | 2023.11.29 |
---|---|
[Java] 백준 1786번 문제(찾기) (0) | 2023.11.29 |
[Java] 백준 1991번 문제 (트리 순회) (1) | 2023.11.17 |
[Java] 백준 2606번 문제 (바이러스) (0) | 2023.11.17 |
[Java] 백준 1260번 문제 (DFS와 BFS) (0) | 2023.11.17 |