문제설명

 

 

소스코드

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이 출력되어야 한다.