[백준 자바] 1373번(2진수 8진수), 2998번(8진수) - 2진수를 8진수로 바꾸기

2024. 6. 19. 12:21·코딩테스트/백준-Java
728x90

2진수를 8진수로 바꾸려면 2진수의 3비트씩 잘라내 해당 비트의 8진수값을 순서대로 붙이면 된다.

3개씩 잘라내기 위해 2진수의 길이가 3의 배수가 아니면 모자른 길이만큼 2진수 앞에 0을 붙인다.

11001100로 예를 들면

11001100 => 011001100 => 011 / 001 / 100

011 => 3

001 => 1

100 => 4

=> 314

import java.io.*;

public class Main {
  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    StringBuilder binary = new StringBuilder(br.readLine());

    bw.write(binaryToOctal(binary).toString());

    bw.flush();
    br.close();
    bw.close();
  }

  static StringBuilder binaryToOctal(StringBuilder binary) {
    int addZero = binary.length() % 3 == 0 ? 0 : 3 - binary.length() % 3;

    for (int i = 0; i < addZero; i++) {
      binary.insert(0, '0');
    }

    StringBuilder octal = new StringBuilder();

    for (int i = 0; i < binary.length(); i += 3) {
      String digit = binary.substring(i, i + 3);
      octal.append(binaryDigitToOctal(digit));
    }

    return octal;
  }

  static char binaryDigitToOctal(String binary) {
    switch (binary) {
      case "000":
        return '0';
      case "001":
        return '1';
      case "010":
        return '2';
      case "011":
        return '3';
      case "100":
        return '4';
      case "101":
        return '5';
      case "110":
        return '6';
      case "111":
        return '7';
      default:
        return '?';
    }
  }
}

 

728x90

'코딩테스트 > 백준-Java' 카테고리의 다른 글

[백준 자바] 6588번(골드바흐의 추측)  (0) 2024.06.23
[백준 자바] 2226번(이진수)  (0) 2024.06.20
[백준 자바] 2738번(행렬 덧셈)  (1) 2024.05.05
[백준 자바] 1260번(DFS와 BFS)  (3) 2024.04.20
[백준 자바] 9372번(상근이의 여행) - BFS(너비 우선 탐색) 사용하기  (1) 2024.04.20
'코딩테스트/백준-Java' 카테고리의 다른 글
  • [백준 자바] 6588번(골드바흐의 추측)
  • [백준 자바] 2226번(이진수)
  • [백준 자바] 2738번(행렬 덧셈)
  • [백준 자바] 1260번(DFS와 BFS)
gamzaggang7
gamzaggang7
    250x250
  • gamzaggang7
    abcdefghklpqrstuvwxyz
    gamzaggang7
  • 전체
    오늘
    어제
    • 분류 전체보기
      • CS
        • OS
        • 자료구조_알고리즘
      • Java
      • Javascript
      • Node.js
      • React
      • Vue.js
      • 코딩테스트
        • 백준-Java
        • 프로그래머스-JS
      • Canvas
      • HTML, CSS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스택
    canvas
    백준풀이
    해시
    서버구축
    Next.js
    자바백준풀이
    프로그래머스
    BFS
    React
    vue animation
    라우팅
    npm
    css
    자바
    자바공부
    큐
    오즈코딩스쿨
    Node.js
    dat.gui
    hashchange
    fegaussianblur
    정렬
    2차원배열
    자바스크립트
    props
    fecolormatrix
    til
    vue.js
    vue modal
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gamzaggang7
[백준 자바] 1373번(2진수 8진수), 2998번(8진수) - 2진수를 8진수로 바꾸기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.