본문 바로가기

Algorithm/[BOJ] - JAVA

[백준] 1373 : 2진수 8진수 JAVA 풀이

 

처음에는 2진수를 10진수로 변환하고 메서드로 8진수로 변환한 값을 출력하면 되겠다!

했는데 틀렸다..

입력조건을 전혀 고려하지 않았기 때문이었다 하하

 

입력되는 수의 길이가 최대 999999인데 2^999999를 담을 수 있는 자료형이 없다는 게 문제였다.

 

그래서 정석대로 3자리씩 잘라서 8진수로 변환하는 방법으로 변경했다.

 

 

 

import java.io.*;
import java.util.*;
public class bj_1373 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuffer sb = new StringBuffer();
		String str = br.readLine();
		
        
		if(str.length()%3==1) {
			sb.append(str.charAt(0));
		}
		else if(str.length()%3==2) {
			sb.append((str.charAt(0)-'0')*2+(str.charAt(1)-'0'));
		}
		for(int i=str.length()%3;i<str.length();i+=3) {
			sb.append((str.charAt(i)-'0')*4+(str.charAt(i+1)-'0')*2+(str.charAt(i+2)-'0'));
		}
		System.out.println(sb);
		
	}

}