본문 바로가기

[BOJ] - JAVA

[백준] 1212 : 8진수 2진수 JAVA 풀이

 

Integer.toBinaryString()메서드는 Integer를 2진수로 바꿔주는데,

3일 경우는 011이 아니라 11로 바꿔준다.

이 문제에서는 8진수를 2진수로 바꿔야 하므로

변환된 값이 세 자리가 아닌 경우에는 앞에 0을 붙여줘야 한다.

 

그리고 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다는 조건도 주의해야 한다.

 

import java.io.*;
import java.util.*;
public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine();
		
		StringBuffer sb = new StringBuffer();
		
		for(int i=0;i<str.length();i++) {
        	// 입력받은 str의 한 글자를 이진수로 변환함
			String tmp = Integer.toBinaryString(str.charAt(i)-'0');
            
            // 변환한 것이 두 자리이고 0으로 시작하지 않는다면 스트링빌더에 0을 추가
			if(tmp.length()==2&&i!=0) sb.append('0');
			
            // 변환한 것이 한 자리이고 0으로 시작하지 않는다면 스트링빌더에 00을 추가
            else if(tmp.length()==1&&i!=0) sb.append("00");
            
            // 2진수로 변환한 값을 스트링빌더에 추가
			sb.append(tmp);
		}
		System.out.println(sb);
	}

}