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 |