IDEONE -> http://ideone.com/I1c6fz

//http://www.careercup.com/question?id=5727644228255744

위에 문제가 두 스트링 두개 바이너리로 들어오는거 더해서 하나로 만들면되는데

좀끙끙되다가 돌아가도록 코드는썻는데

이런식으로 코드쓰면 딱 불합격하는게 느껴지네요..

이병신좀 구제해주세요


최적화나 더 좋은 코드를 쓰려면 어떤식으로 접근해야할까요




public class SumBinary {


    public static String sumBinary(String s1, String s2) {

char[] a, b;


if(s1.length()>s2.length()){

   a = s1.toCharArray();

   b = s2.toCharArray();

}else {

   b = s1.toCharArray();

   a = s2.toCharArray();

}

int length = s1.length() > s2.length() ? s1.length() + 1 : s2.length() + 1;

char[] sum = new char[length];

char c = '0';


int i = s1.length() - 1, j = s2.length() - 1; //for looks code easy


while( i>=0 ) {

   if(a[i] == '0' && c == '0') {

if(j<0) sum[i+1] = '0';

else

   sum[i+1] = b[j];

   }else if(a[i] == '0' && c == '1') {

if(j<0) {

   sum[i+1] = '1';

   c = '0';

}else if(b[j] == '0') {

   sum[i+1] = '1';

   c = '0';

}else{

   sum[i+1] = '0';

   c = '1';

}

   }else if(a[i] == '1' && c == '1') {

if(j<0) {

   sum[i+1] = '0';

   c = '1';

}else if(b[j] == '0') {

   sum[i+1] = '0';

   c = '1';

}else{

   sum[i+1] = '1';

   c = '1';

}

   }else if(a[i] == '1' && c == '0') {

if(j<0) {

   sum[i+1] = '1';

   //c == '0';

} else if(b[j] == '0') {

   sum[i+1] = '1';

}else {

   sum[i+1] = '0';

   c='1';

}

   }


   

   


   i--;

   j--;

}

if(c == '1') sum[0] = '1';

// System.out.println(sum);


return new String(sum); // or return sum?

    }


    public static void main(String[] args) {



        System.out.println(sumBinary("", ""));

        System.out.println(sumBinary("0", "0"));

        System.out.println(sumBinary("1", "1"));

        System.out.println(sumBinary("0111101", "0001101"));

System.out.println(sumBinary("1111", "0000"));

System.out.println(sumBinary("1010", "0101"));

System.out.println(sumBinary("1111", "1111"));


System.out.println(sumBinary("1111", ""));

System.out.println(sumBinary("1111", "1"));

System.out.println(sumBinary("1111", "00"));

System.out.println(sumBinary("1111111111111111", "111"));


    }

    

}