-
백준 1212 8진수 2진수 (Java)알고리즘 타파/Baekjoon Online Judge 2020. 7. 7. 01:12반응형
URL
https://www.acmicpc.net/problem/1212
문제
8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.
입력
첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.
출력
첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.
생각
- 입력된 자릿 수가 1자리이고, 그 수가 0인 경우에만 맨 앞에 "0"이 출력될 수 있다. (그 외의 경우는 반드시 1로 시작해야 한다.)
- 8진수는 2의 제곱수로 일일히 나누었더니 시간 초과가 발생했다.
- 빠른 변환을 위해 8진수 1~7에 대응하는 2진 변환 결과를 미리 배열에 넣어놓았다.
- 8진수가 입력되었을 때, 2진수로 변환 시 맨 앞이 0이 올 경우는 1~3의 경우이므로 예외 처리를 해야 한다.
성공 코드
import java.util.Scanner; public class Baekjoon1212 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); StringBuilder sb = new StringBuilder(); String input = scanner.nextLine(); String[] binaryOctalArray = {"000", "001", "010", "011", "100", "101", "110", "111"}; if(input.length() == 1 && input.charAt(0) == '0') { sb.append(0); } else { for (int i=0; i<input.length(); i++) { int n = Character.getNumericValue(input.charAt(i)); if(i == 0 && n < 4) { switch (n) { case 1: sb.append("1"); break; case 2: sb.append("10"); break; case 3: sb.append("11"); break; } } else { sb.append(binaryOctalArray[n]); } } } System.out.println(sb.toString()); } }
반응형'알고리즘 타파 > Baekjoon Online Judge' 카테고리의 다른 글
백준 17103 골드바흐 파티션 (Java) (0) 2020.07.10 백준 2089 -2진수 (Java) (0) 2020.07.08 백준 1373 2진수 8진수 (Java) (0) 2020.07.05 백준 17087 숨바꼭질 6 (Java) (0) 2020.07.03 백준 9613 GCD 합 (Java) (0) 2020.07.02