
내가 작성한 코드
class Solution {
public String solution(String bin1, String bin2) {
// 길이 맞추기
while (bin1.length() < bin2.length()) bin1 = "0" + bin1;
while (bin2.length() < bin1.length()) bin2 = "0" + bin2;
StringBuilder answer = new StringBuilder();
int nextNum = 0; // 자리 올림
// 뒤에서부터 계산
for (int i = bin1.length() - 1; i >= 0; i--) {
int sum = (bin1.charAt(i) - '0') + (bin2.charAt(i) - '0') + nextNum;
answer.append(sum % 2); // 현재 자리 값 (0 또는 1)
nextNum = sum / 2; // 자리 올림 (0 또는 1)
}
// 마지막 자리 올림이 남아 있으면 추가
if (nextNum == 1) {
answer.append("1");
}
return answer.reverse().toString();
}
}
다른 사람의 코드
public String solution(String bin1, String bin2) {
return Integer.toString(Integer.parseInt(bin1, 2) + Integer.parseInt(bin2, 2), 2);
}
10진법으로 변환 후 계산하고 결과값을 다시 2진법으로 변환하는 방식
Share article