String s = br.readLine();
StringTokenizer st = new StringTokenizer(s);
String A = st.nextToken(); //이진수1
String B = st.nextToken(); //이진수2
String answer = ""; //정답
int a = A.length()-1, b = B.length()-1;
int x = 0; //올림수
int ca, cb;
while(true) {
if(a < 0) ca = 0; //범위를 넘어가면 0으로 계산
else ca = A.charAt(a)-48; //맨 뒤의 자리부터 계산
if(b < 0) cb = 0;
else cb = B.charAt(b)-48;
int k = ca + cb + x;
if(k == 0) {
answer += "0";
x = 0;
}
else if(k == 1) {
answer += "1";
x = 0;
}
else if(k == 2) {
answer += "0";
x = 1;
}
else if(k == 3) {
answer += "1";
x = 1;
}
a--; b--;
if(a < 0 && b < 0 && x == 0) break; //이진수 A와 B 모두 계산이 끝나고 올림수 또한 없을 때 while문 빠져나오기
}
StringBuilder sb = new StringBuilder(answer);
answer = sb.reverse().toString();
int i = 0; //맨 앞자리의 0은 제거...단 최종 값이 0이 아닐 경우에만
while(answer.length() != 1 && answer.charAt(i) == '0') {
if(answer.charAt(i) == '0') {
answer = answer.substring(1);
}
}
System.out.println(answer);
2023-03-05