-
[Baekjoon Online Judge] 1373번: 2진수 8진수문제 풀이/Baekjoon Online Judge 2021. 2. 8. 10:25
요구사항
- 2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오.
입력
- 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.
출력
- 첫째 줄에 주어진 수를 8진수로 변환하여 출력한다.
의도적으로 2인수의 길이를 3의 배열로 만들고 쪼개여 새로운 8진수를 만들어 낸다.
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.HashMap; import java.util.Map; public class Baekjoon1373 { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); Map<String, String> binaryMap = new HashMap<>(); binaryMap.put("000", "0"); binaryMap.put("001", "1"); binaryMap.put("010", "2"); binaryMap.put("011", "3"); binaryMap.put("100", "4"); binaryMap.put("101", "5"); binaryMap.put("110", "6"); binaryMap.put("111", "7"); String binary = bufferedReader.readLine(); if (binary.length() % 3 == 1) binary = "00" + binary; else if (binary.length() % 3 == 2) binary = "0" + binary; for (int i = 0; i < binary.length() / 3; i++) { String divBinary = binary.substring(i * 3, i * 3 + 3); bufferedWriter.write(binaryMap.get(divBinary)); } bufferedWriter.flush(); bufferedReader.close(); bufferedWriter.close(); } }
'문제 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
[Baekjoon Online Judge] 1715번: 카드 정렬하기 (0) 2021.02.09 [Baekjoon Online Judge] 4796번: 캠핑 (0) 2021.02.09 [Baekjoon Online Judge] 11655번: ROT13 (0) 2021.02.08 [Baekjoon Online Judge] 10844번: 쉬운 계단 수 (0) 2021.02.06 [Baekjoon Online Judge] 10870번: 피보나치 수 5 (0) 2021.02.06