8진수 2진수

링크

 

풀이

  • 8진수로 들어오는 값 n 에 대해서 각 자릿수를 이진수로 표현하면 된다.
  • 만약 8진수로 값이 314 가 들어왔으면 3, 1, 4 이렇게 끊는다.
  • 이후 각각의 값을 2진수로 변환시켜주면 된다.
    • 3 → 011
    • 1 → 001
    • 4 → 100
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {

	static InputStreamReader isr;
	static BufferedReader br;
	static OutputStreamWriter osw;
	static BufferedWriter bw;
	static StringTokenizer st;
	
	public static void main(String[] args) throws IOException {

		isr = new InputStreamReader(System.in);
		br = new BufferedReader(isr);
		osw = new OutputStreamWriter(System.out);
		bw = new BufferedWriter(osw);

		/** 팔진수 입력  **/
		String line = br.readLine();
		StringBuilder sb = new StringBuilder();
		StringBuilder result = new StringBuilder();
		
		for(int i = 0; i < line.length(); i++) {
			int value = Integer.parseInt(line.charAt(i) + "");
			
			while(value != 0) {
				sb.append(value % 2);
				value /= 2;
			}
			
			if(sb.length() == 0) {
				sb.append("0");
			}
			
			while(sb.length() % 3 != 0) {
				sb.append("0");
			}
			
			sb.reverse();
			
			result.append(sb.toString());
			sb.delete(0, sb.length());
		}
		
		int startIndex = result.indexOf("1");

		if(startIndex == -1) {
			bw.write("0\n");
		} else {
			bw.write(result.substring(startIndex) + "\n");
		}
		
		bw.flush();
		bw.close();
		br.close();
	}	
}
Posted by doubler
,