문제
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
풀이
배열로 반환하여 더한 값이 2이상인 경우 2의 나머지를 제외한 값을 2의 몫으로 앞자리수에 더하는 방법
class Solution {
public String solution(String bin1, String bin2) {
String answer = "";
String sum = "0"+(Long.parseLong(bin1)+Long.parseLong(bin2));
String[] arr = sum.split("");
int add = 0;
for(int i=arr.length-1;i>=0;i--){
if(add>0){
arr[i] = ""+(Integer.parseInt(arr[i])+add);
add = 0;
}
if(Integer.parseInt(arr[i])>1){
add = Integer.parseInt(arr[i])/2;
arr[i] = ""+(Integer.parseInt(arr[i])%2);
}
}
for(int i=0; i<arr.length; i++){
if(i==0&&arr[i].equals("0")){
} else {
answer += arr[i];
}
}
return answer;
}
}
다른 풀이
해당 방법은 간단하게
Integer.parseInt(이진수문자, 2) 로 통해 숫자로 변환후
Integer.toBinaryString()을 통해 이진수로 반환한다
class Solution {
public String solution(String bin1, String bin2) {
String answer = "";
int a = Integer.parseInt(bin1,2);
int b = Integer.parseInt(bin2,2);
answer = Integer.toBinaryString(a+b);
return answer;
}
}
'programmers' 카테고리의 다른 글
[JAVA] 정수를 나선형으로 배치하기 (0) | 2024.06.28 |
---|---|
[JAVA] ☆연속된 수의 합 (0) | 2024.06.27 |
[JAVA] 평행 (0) | 2024.06.27 |
[JAVA] 겹치는 선분의 길이 (0) | 2024.06.27 |
[JAVA] 배열 조각하기 - Arrays.copyOfRange() (0) | 2024.06.26 |