백준 #1212 8진수 2진수

김리나·2023년 3월 18일
0

알고리즘

목록 보기
2/8

문제

8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.


풀이

  • 시도 (1)

런타임 에러 발생

import java.util.*;
import java.lang.*;

public class Main {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
	
		int x = scanner.nextInt();
		int size=0;
		int octal[] = new int[6];
		while(x != 0) {
			octal[size]=x%10;
			x/=10;
			size++;
		}
		
		int decimal=0;
		for(int i=0; i<size; i++) {
			decimal += octal[i]*Math.pow(8, i);
		}
		
		int binary[] = new int[18];
		int cnt=0;
		while(true) {
			binary[cnt] = decimal%2;
			decimal/=2;
			cnt++;
			if(decimal == 1) {
				binary[cnt]=1;
				cnt++;
				break;
			}
		}
		
		for(int i=cnt-1; i>=0; i--) {
			System.out.print(binary[i]);
		}

		scanner.close();
	}

}
  • 시도 (2)

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		StringBuffer sb = new StringBuffer();
		
		String s = scanner.next();
		
		for(int i=0; i<s.length(); i++) {
			String a = Integer.toBinaryString(s.charAt(i)-'0');
			//맨 처음이 아닐 경우 앞에 0 추가해주기
			if(a.length()==2 && i!=0)
				a="0"+a;
			else if(a.length()==1 && i!=0)
				a="00"+a;
			//문자열 더하기
			sb.append(a);
		}
		System.out.println(sb);
		
	}

}

0개의 댓글