백준(Backjoon) 1212, 8진수 2진수

2021. 6. 24. 11:19CodingTest

문제설명

문제풀이

입력으로 8진수가 입력되었다고 가정합니다. 위 문제를 해결하기 위해서 저는 입력을 정수가 아닌 문자열(String)로 받았습니다. 그리고 반복문을 통하여 앞에서부터 문자열 타입 숫자를 2진수로 변환하여 StringBuilder 타입의 변수에 이어 붙였습니다. 단, 여기서 주의할 점은 입력으로 0이 들어왔을 경우에는 0을 반환하도록 설정하였습니다.

 

소스코드 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {
	private static String[] map = {"000","001","010","011","100","101","110","111"};
	
	/* 8진수를 입력받으면 2진수로 변환시켜준다.*/
	public static String solution(String n)
	{
		StringBuilder answer = new StringBuilder();
		
		/* 수가 0인 경우*/
		if(n.equals("0"))
		{
			return "0";
		}
		
		/* 8진수를 앞의 숫자부터 참조하여 2진수로 변경한다.*/
		for(int i=0;i<n.length(); i++)
		{
			answer.append(map[Integer.parseInt(String.valueOf(n.charAt(i)))]);
		}
		
		/* 2진수의 맨 앞자리의 0들을 제거 */
		while(answer.charAt(0)=='0')
		{
			answer = answer.deleteCharAt(0);
		}
		
		
		return answer.toString();
		
	}
	
	public static void main(String args[]) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		System.out.println(solution(br.readLine()));
		
	}
}