Day 37: 1212 (https://www.acmicpc.net/problem/1212)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import java.io.BufferedReader; import java.io.InputStreamReader; public class b1212 { static StringBuilder sbl; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); char[] octToConvert = br.readLine().toCharArray(); sbl = new StringBuilder(); octToBin(octToConvert); System.out.println(sbl.toString()); } static void octToBin(char[] octToConvert) { boolean first = true; String[] binVal = {"000", "001", "010", "011", "100", "101", "110", "111"}; for (char c: octToConvert) { if (first) { if (c < '2') sbl.append(binVal[c-'0'].substring(2)); else if (c < '4') sbl.append(binVal[c-'0'].substring(1)); else sbl.append(binVal[c-'0']); first = false; } else sbl.append(binVal[c-'0']); } } } | cs |
2가지 접근 방법이 있겠다
1. typical한 8->2진수 변환 알고리즘 (/2 %2, /2 %2, ...)을 구현하고 Input 한자리씩 변환
2. 어차피 1의 자리 8진수이므로 그냥 결과값 7개 선언해두고 검사
1번 방법은 이미 알고 있어서 빠른 풀이를 위해 2번으로 풀었다.
