[백준] 1212번 8진수 2진수 (java, 구현)

728x90
반응형

www.acmicpc.net/problem/1212

 

1212번: 8진수 2진수

첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

www.acmicpc.net

10진수로 변환할 때 int범위를 넘어갈 수 있기 때문에 8진수를 바로 2진수로 바꿔주는 문제이다.

8진수 3자리는 2진수 1자리가 된다는 것을 이용한다.

 

맨 앞자리의 수가 0으로 시작할 경우를 주의해준다

 

import java.util.Scanner;

public class Main {
	
	static String num;
	static String[] binary= {"000","001","010","011","100","101","110","111"}; //8보다 작음
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		num=sc.nextLine();

		StringBuilder sb=new StringBuilder();
		for (int i = 0; i < num.length(); i++) {
			int cur=num.charAt(i)-'0';
			if(i==0 && cur<4) {
				if(cur<2) { //0,1인 경우 앞의 두자리('00') 잘라주기
					sb.append(binary[cur].substring(2));
				}else {// 2,3인 경우 앞의 한 자리 ('0') 잘라주기 
					sb.append(binary[cur].substring(1));
				}
				
			}else {
				sb.append(binary[cur]);
			}
			
		} 
		
		System.out.println(sb.toString());
		
	}
}
728x90
반응형
TAGS.

Comments