import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String N = bf.readLine();
if (N.length() % 3 == 1) {
sb.append(N.charAt(0)-'0');
}
if (N.length() % 3 == 2) {
sb.append((N.charAt(0) - '0') * 2 + (N.charAt(1) - '0'));
}
for (int i = N.length() % 3; i<N.length(); i+=3) {
sb.append((N.charAt(i) - '0') * 4 + (N.charAt(i+1) - '0') * 2 + (N.charAt(i+2) - '0'));
}
System.out.println(sb);
}
}
2진수를 입력받으면 8진수로 출력하는 문제이다.
이 경우 2진수를 1의자리부터 3자리씩 끊어서 연결해주면 8진수가 된다.
예를들어 11001100은 11 / 001 / 100 으로 분리시켜주고 각각 3 / 1 / 4를 연결해주면 314처럼 8진수 숫자가 된다.
문제의 핵심은 1의 자리부터 세자리씩 끊어서 숫자로 변환시켜주고 그걸 string으로 연결해줘야한다는 점이다.
처음에는 2진수를 String으로 받고 분리시켜 배열에 넣어주고 배열내부를 계산해서 저장하고 String처럼 더 해주려했는데 실패했다.
그래서 StringBuilder와 charAt을 사용해서 숫자로 변환하는 방법을 사용해서 문제를 푸는 방향으로 생각을했다.
(N.charAt(0) - '0')
여기서 N.charAt(0)이 숫자형 문자열일때 -'0'을 해주면 진짜 숫자가 나온다.
앞으로 숫자문자열을 int형으로 변환할 경우가 있으면 사용하기 좋아보인다.