1373번: 2진수 8진수
첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.
www.acmicpc.net
문제
2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오.
입력
첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.
출력
첫째 줄에 주어진 수를 8진수로 변환하여 출력한다.
예제 입력 1
11001100
예제 출력 1
314
풀이 .
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String n = br.readLine();
if(n.length() % 3 == 1) {
n = "00" + n;
}else if(n.length() % 3 == 2) {
n = "0" + n;
}
ArrayList<Integer> binaryList = new ArrayList<>();
for(int i = n.length() - 1; i >= 0; i--) {
binaryList.add(n.charAt(i) - '0');
}
ArrayList<Integer> octaList = new ArrayList<>();
for(int i = 0; i < binaryList.size(); i+=3) {
int octa = binaryList.get(i) * (int)Math.pow(2, 0);
octa += binaryList.get(i+1) * (int)Math.pow(2, 1);
octa += binaryList.get(i+2) * (int)Math.pow(2, 2);
octaList.add(octa) ;
}
Collections.reverse(octaList);
for(int octa : octaList) {
System.out.print(octa);
}
}
}
mod 3에 따라 String의 길이를 늘려주고 시작하는 게 핵심
'알고리즘 문제 > 백준 온라인 저지' 카테고리의 다른 글
[BOJ] 2089 - -2진수 JAVA (0) | 2021.01.16 |
---|---|
[BOJ] 1212 - 8진수 2진수 JAVA (0) | 2021.01.16 |
[BOJ] 2745 - 진법 변환 JAVA (0) | 2021.01.16 |
[BOJ] 11005 - 진법 변환 2 JAVA (0) | 2021.01.16 |
[BOJ] 9613 - GCD 합 JAVA (0) | 2021.01.15 |