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