[알고리즘]/백준

백준 1373 자바 - 2진수 8진수

broship 2021. 7. 4. 14:38

문제


 

 

문제해결


- 2진수를 바로 8진수로 바꾸는 방법을 그대로 코드로 작성하였다

1. 자리수가 딱 3에 나누어 떨어지도록 0이나 00을 추가한다

2. 3자리씩 끊어서 0번째에는 2^0, 1번째에는 2^1, 2번째에는 2^2를 곱하고, 그 결과를 더한다

3. 각 계산 결과를 이어서 붙이면 8진수가 나온다

import java.util.Scanner;

public class B1373 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        // 3자리씩 끊을 수 있도록 자리수 맞추기
        int size = str.length();
        if (size%3==2) str = "0" + str;
        if (size%3==1) str = "00" + str;
        //변환할 8진수를 담을 sb
        StringBuilder sb = new StringBuilder();
        //각 자리수 연산 결과를 임시로 담을 변수
        int a = 0;
        int b = 0;
        int c = 0;
        for (int i = str.length()-1; i >= 0; i--) {
            int num = str.charAt(i) - '0';
            //반복문을 돌면서 각 자리수 계산
            if (i%3==2) a = num*1;
            else if (i%3==1) b = num*2;
            else if (i%3==0){
                c = num*4;
                sb.append(a+b+c);
            }
        }
        System.out.println(sb.reverse());
    }
}

 

'[알고리즘] > 백준' 카테고리의 다른 글

백준 2089 자바 - -2진수  (0) 2021.07.05
백준 1212 자바 - 8진수 2진수  (0) 2021.07.04
백준 17087 자바 - 숨바꼭질6  (0) 2021.07.03
백준 9613 자바 - GCD 합  (0) 2021.07.02
백준 2004 자바 - 조합 0의 개수  (0) 2021.07.01