Coding Test/Baekjoon - Java

1373: 2진수 8진수

_jordy 2021. 2. 15. 11:49

www.acmicpc.net/problem/1373

 

1373번: 2진수 8진수

첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.

www.acmicpc.net

2진수를 뒷자리부터 3자리씩 자르면 8진수로 바꿀 수 있다.

부족한 자리는 0으로 채우고 3자리씩 자른 숫자에 2진수의 자릿값을 곱한 후 더한다.

3자리씩 잘랐을 때 맨앞에 1자리 or 2자리 or 3으로 나누어 떨어지는 경우를 각각 나누어 작성했다.


import java.util.*;

public class Main{
    public static void main(String [] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int n = s.length();
    
        if (n%3 == 1)  //세 자리씩 끊었을 때 맨 앞에 한 자리 남는 경우
            System.out.print(s.charAt(0));
        else if (n%3 == 2)  //두 자리 남는경우
            System.out.print((s.charAt(0)-'0')*2 + (s.charAt(1)-'0'));
        
       
        for (int i=n%3; i<n; i+=3) { 
            System.out.print((s.charAt(i)-'0')*4 + (s.charAt(i+1)-'0')*2 + (s.charAt(i+2)-'0'));
        }
    }
}

'Coding Test > Baekjoon - Java' 카테고리의 다른 글

1212: 8진수 2진수 -->다시  (0) 2021.02.15
2745: 진법 변환  (0) 2021.02.15
11005: 진법 변환 2  (0) 2021.02.15
9613: GCD합  (0) 2021.02.15
1850: 최대공약수  (0) 2021.02.15