백준 1212번 : 8진수 2진수 | 자바 풀이

박지윤·2022년 7월 16일
0

Algorithm_Implementation

목록 보기
7/16

[ Solution ]

import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {

        Scanner sc = new Scanner(System.in);
        String s = sc.next();

        StringBuilder sb = new StringBuilder(); // string을 더하는 상황에 유용

        for(int i = 0; i < s.length(); i++) {
            String a = Integer.toBinaryString(s.charAt(i) - '0'); // charAt은 string으로 저장된 문자열 중에서 한 글자만 선택해서 char 타입으로 바꿔준다
            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);
    }
}

이 문제는 8진수를 2진수로 바꾸는 방법을 잘 알고 있어야 하고, 자바의 지정된 함수를 잘 사용할 수 있어야 하는 문제처럼 보인다.

8진수를 문자열로 입력받아서, 하나씩 인덱스로 뜯어 십진수 정수로 변경 후, 그 수를 binary로 바꿔주면 되는데 이 작업을 Integer.toBinaryString() 함수를 이용하면 편리하다.

중요한 것은 첫 번째 인덱스가 아닐 경우 2진수를 세 자리로 표현하여 붙여야 하기 때문에 그 점을 빠뜨리지 않고 구현해주어야 한다는 것이다.

0개의 댓글