문제
문제해결
- 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 |