[백준, 자바] 1212번 - 8진수 2진수

jinvicky·2024년 4월 14일
0

ALG

목록 보기
28/62
post-thumbnail
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String N = br.readLine();
        int answer = 0;
        StringBuilder sb = new StringBuilder();

        for(int i = N.length()- 1; i >= 0; i--) {
            int number = N.charAt(N.length()- 1 - i) - '0'; // 0을 빼주어야 숫자로 변환할 수 있다.
            int expr = (int)Math.pow(8, i) * number;
            answer += expr;
        }

        while(answer != 0) {
            sb.append(answer % 2);
            answer /= 2;
        }

        System.out.println(sb.reverse());
    }
}

결과는 잘 나오는데 틀렸다고 한다.
1373번 문제와 마찬가지로 toString()과 BigInteger로 해결이 가능할 것 같다.

다시 가보자.



import java.math.BigInteger;
import java.io.*;


public class Main {

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String N = br.readLine();

        BigInteger octNumber = new BigInteger(N, 8);
        String binaryString = octNumber.toString(2);

        System.out.println(binaryString);

    }
}

이렇게 하면 맞는다.

참고로 N.toString(2)를 하면 에러가 발생한다.

profile
일단 쓰고 본다

0개의 댓글