[JAVA] 백준 1212번 : 8진수 2진수

안녕하세요, 해을입니다🦖

이번 글에서는 백준 1212번 : 8진수 2진수 문제에 대해 알아보겠습니다!

image

💡 문제

8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.

💡 입력

첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

💡 출력

첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.

💡 예제 입력 1

314

💡 예제 출력 1

11001100

🚩 문제 풀이

[주어진 값]

  • 8진수 : n

[구해야 할 값]

  • 주어진 8진수를 2진수로 변환

가장 먼저 배열을 하나 생성하여 8진수를 2진수로 변환한 값을 저장해둡니다.

8진수 값을 입력받아 앞자리부터 하나씩 살펴보며 그에 맞는 2진수 값을 StringBuilder에 담습니다.

이때 수가 0인 경우를 제외하고는 반드시 1로 시작해야 하므로 맨 앞자리가 0으로 시작하는 경우(8진수 값 : 0~3)는 예외 처리 합니다.

  • 맨 앞자리 : i == 0
  • 0으로 시작하는 경우 : num < 4

🚩 소스 코드

import java.util.Scanner;

public class Main {
 public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  StringBuilder sb = new StringBuilder();
  
  String[] binary = {"000","001","010","011","100","101","110","111"};
  
  String n = sc.nextLine();
  sc.close();
  
  for(int i=0; i<n.length(); i++) {
   int num = n.charAt(i) - '0'; // 문자열 정수로 변환
   if(i==0 && num < 4) { // 맨 앞자리에 0이 오는 경우, 예외 처리
    if(num<2) sb.append(binary[num].substring(2)); // 000, 001
    else sb.append(binary[num].substring(1)); // 010, 011
   }else {
    sb.append(binary[num]);
   }
  }
  
  System.out.println(sb.toString());
 }
}

오류 및 오타 지적, 질문, 인사 등 무엇이든 언제나 환영입니다!

읽어주셔서 감사합니다.

끝!🦕


© 2022. Haeeul All rights reserved.

🐾해을의 개발자국🐾

Powered by Hydejack v9.1.5