본문 바로가기
Algorithms/BOJ

[Java] 1373. 2진수 8진수

by kyungsubbb 2021. 3. 14.

www.acmicpc.net/problem/1373

 

1373번: 2진수 8진수

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

www.acmicpc.net

문제

2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄에 주어진 수를 8진수로 변환하여 출력한다.


import java.io.BufferedReader;
import java.io.InputStreamReader;

public class BOJ_1373 {
	static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	public static void main(String[] args) throws Exception{
		String input = in.readLine();
		solution(input);
	}
	private static void solution(String res) {
		int len = res.length() - (res.length()/3)*3;
		String result = res;
		if(len != 0) {
			for (int i = 0; i < 3-len; i++) {
				result = "0" + result;
			}
		}
		for (int i = 0; i < result.length()/3; i++) {
			int start = i*3;
			String tmp = (start+3 < result.length()) ? result.substring(start, start + 3) : result.substring(start);
			toOcx(tmp);
		}
		
 	}
	private static void toOcx(String string) {
		int bin = 1;
		int res = 0;
		for (int i = string.length()-1; i >= 0; i--) {
			res += (string.charAt(i)-'0')*bin;
			bin *= 2;
		}
		System.out.print(res);
	}
	

}

분명 브론즈였는데... 삽질을 엄청한 문제다..

 

메모리초과가 발목을 잡았던것 같다.

 

그러다 질문 탭에 굳이 답을 저장할 필요가 없다라는 것을 보고 출력하는 방식으로 진행헀다.

 

혹시나 필요하신분은 (0, 1, 100, 00, ... 등 반례로 써보세요.. 생각치도못한 엄청 긴 반례도 존재하니 찾아보는것 추천!)

'Algorithms > BOJ' 카테고리의 다른 글

[Java] 1600. 말이 되고픈 원숭이  (0) 2021.03.25
[Java] 1463. 1로 만들기  (0) 2021.03.24
[Java] 20057. 마법사 상어의 토네이도  (0) 2021.03.09
[Java] 1012. 유기농 배추  (0) 2021.03.07
[Java] 10816. 숫자 카드 2  (0) 2021.03.06