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()의 용도를 하나 더 알게 되었다.