문제
내가 작성한 정답
class Solution {
public String solution(String bin1, String bin2) {
return Integer.toBinaryString(Integer.parseInt(bin1,2)+Integer.parseInt(bin2,2));
}
}다른 사람들의 정답
class Solution {
public String solution(String bin1, String bin2) {
String answer = "";
long num1 = 0, num2 = 0, sum = 0;
long cnt = 1;
for (int i = bin1.length() - 1; i >= 0; i--) {
num1 += Long.parseLong(bin1.charAt(i) + "") * cnt;
cnt *= 2;
}
cnt = 1;
for (int i = bin2.length() - 1; i >= 0; i--) {
num2 += Long.parseLong(bin2.charAt(i) + "") * cnt;
cnt *= 2;
}
sum = num1 + num2;
while (sum >= 1) {
answer = sum % 2 + answer;
sum /= 2;
}
return (answer == "" ? answer = "0" : answer);
}
}
import java.math.BigInteger;
class Solution {
public String solution(String bin1, String bin2) {
String answer = "";
BigInteger bin1Binary = new BigInteger(bin1, 2);
BigInteger bin2Binary = new BigInteger(bin2, 2);
int num = (bin1Binary.add(bin2Binary)).intValue();
return Integer.toBinaryString(num);
}
}
class Solution {
public String solution(String bin1, String bin2) {
StringBuilder answer = new StringBuilder();
int i = bin1.length() - 1;
int j = bin2.length() - 1;
int carry = 0;
while (i >= 0 || j >= 0 || carry > 0) {
int sum = carry;
if (i >= 0) sum += bin1.charAt(i--) - '0';
if (j >= 0) sum += bin2.charAt(j--) - '0';
answer.append(sum % 2); // 현재 자리수
carry = sum / 2; // 다음 자리로 넘어갈 값
}
return answer.reverse().toString(); // 뒤집어서 반환
}
}
Share article