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

jinvicky·2024년 4월 14일
0

ALG

목록 보기
27/62
post-thumbnail

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import static java.lang.Integer.toBinaryString;

public class Main_1373 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        String N = br.readLine();
        int answer = 0;

        String result  = toBinaryString(Integer.parseInt(N));

        for (int i = N.length() - 1; i >= 0; i--) {
            int number = N.charAt(N.length() -1 -i) - '0';
            answer += Math.pow(2,i) * number;
        }

        // 10 -> 8진법으로 변환
        while (answer != 0) {
            sb.append(answer % 8);
            answer /= 8;
        }
        System.out.println(sb.reverse());

    }
}

결과는 동일하게 나오지만 또 틀렸단다.
해설을 찾아보니 이건 알고리즘이 아니라 그냥 메서드로 해결해버리길래 화딱지가 났다.
정답

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


public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String N = br.readLine();

        BigInteger binaryNumber = new BigInteger(N, 2);
        String octString = binaryNumber.toString(8);
        System.out.println(octString);
    }
}

BigInteger의 두번째 매개변수로 원하는 진법의 숫자를 넣으면 그 값으로 변환할 수 있다.
자바뿐만 아니라 js로도 가능한 것인데, toString()에 진법의 숫자를 넣으면 해당 진법으로 변환할 수 있다.

BigInteger와 toString()의 용도를 하나 더 알게 되었다.

profile
일단 쓰고 본다

0개의 댓글