[BOJ] 백준 1212 - 8진수 2진수

Lynn·2021년 1월 15일
0

Algorithm

목록 보기
16/43
post-thumbnail

👩🏻‍💻 문제

👩🏻‍💻 정답 코드

import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String s = br.readLine();
        int len = s.length();
        if(s.equals("0") && len == 1) bw.write("0");
        else {
            for(int i = 0; i < len; i++){
                if(i == 0) bw.write(first(s.charAt(i))); //맨 앞 자리
                else bw.write(change(s.charAt(i)));
            }
        }
        bw.flush();
        br.close();
        bw.close();
    }
    
    public static String change(char a) {
        String result;
        switch(a){
            case '0': result="000"; break;
            case '1': result="001"; break;
            case '2': result="010"; break;
            case '3': result="011"; break;
            case '4': result="100"; break;
            case '5': result="101"; break;
            case '6': result="110"; break;
            default: result="111";
        }
        return result;
    }

    public static String first(char a) {
        String result;
        switch(a){
            case '1': result="1"; break;
            case '2': result="10"; break;
            case '3': result="11"; break;
            case '4': result="100"; break;
            case '5': result="101"; break;
            case '6': result="110"; break;
            default: result="111";
        }
        return result;
    }
}

int로 받아서 2진수로 변환을 하면 정수의 범위를 초과하기 때문에 String으로 입력을 받은 후 각 8진수에 대응하는 2진수의 문자열로 변환하는 메소드 change 를 작성했다. 맨 앞자리는 0이 아닌 1로 시작해야 하므로 별도의 메소드 first 를 작성했다.

profile
wanderlust

0개의 댓글

관련 채용 정보