티스토리 뷰

PS/boj

boj)1212 - 8진수 2진수

kingsubin 2020. 9. 16. 15:15
import java.util.Scanner;

// # 8진수 2진수
public class boj_1212 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        String[] arr = {"000", "001", "010", "011", "100", "101", "110", "111"};
        String s = sc.nextLine();

        // 2진수 0이 되는 경우
        if (s.length() == 1 && s.charAt(0) == '0') {
            sb.append(0);
        } else {
            for (int i = 0; i < s.length(); i++) {
                int n = s.charAt(i) - '0'; // 8진수 자리 뽑기

                // 8진수의 첫째 자리 에서 0 처리
                if (i == 0 && n < 4) {
                    switch (n) {
                        case 1:
                            sb.append("1");
                            break;
                        case 2:
                            sb.append("10");
                            break;
                        case 3:
                            sb.append("11");
                    }
                } else {
                    sb.append(arr[n]);
                }
            }
        }
        System.out.println(sb.toString());
    }
}

- 생각은 했는데 코드로 짜는걸 못했음

 

- 8진수의 각자리를 따져서 풀이

- 8진수에 0이 들어올경우 따로 처리

- ex) 314 -> 011 / 001 / 100 3자리로 끊어서 봤을때 맨 앞자리 0을 처리해야되니까 

  if문에서 switch case로 따로 처리 , 2째자리부터는 배열에서 뽑아서 붙이기

 

'PS > boj' 카테고리의 다른 글

boj)1463 - 1로 만들기  (0) 2020.09.16
boj)17103 - 골드바흐 파티션  (0) 2020.09.16
boj)1373 - 2진수 8진수  (0) 2020.09.16
boj)17087 - 숨바꼭질 6  (0) 2020.09.15
boj)9613 - GCD 합  (0) 2020.09.15