Java/Java 프로그래머스

이진수 더하기

MDanderson 2022. 11. 16. 19:46

이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.


제한사항

  • return 값은 이진수를 의미하는 문자열입니다.
  • 1 ≤ bin1, bin2의 길이 ≤ 10
  • bin1과 bin2는 0과 1로만 이루어져 있습니다.
  • bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.

입출력 예

bin1bin2result

"10" "11" "101"
"1001" "1111" "11000"

입출력 예 설명

입출력 예 #1

  • 10 + 11 = 101 이므로 "101" 을 return합니다.

입출력 예 #2

  • 1001 + 1111 = 11000 이므로 "11000"을 return합니다.
class Solution {
    public String solution(String bin1, String bin2) {
        return Integer.toString(Integer.parseInt(bin1, 2) + Integer.parseInt(bin2, 2),2);
    }
}

Integer.parseInt(bin1, 2) 가 2진수로된 String을 10진수로바꾸는거고

Integer.toString(16,2) 가 16을 2진수 String으로 바꾸는것.

 

 

class Solution {
    public String solution(String bin1, String bin2) {
        return Integer.toBinaryString(Integer.parseInt(bin1, 2) + Integer.parseInt(bin2, 2));
    }
}

Integer.toBinaryString(16) 하면 16을 2진수String으로 바꿔줌

 

 

class Solution {
    public String solution(String bin1, String bin2) {
        String answer = "";
        int n = 1;
        int one = 0;
        int two = 0;
        char[] oneArr = bin1.toCharArray();
        char[] twoArr = bin2.toCharArray();
        for(int i = bin1.length()-1; i >= 0; i-- ) {
            one += (oneArr[i]-'0')  * n;
            n *= 2;
        }
        n = 1;
        for(int j = bin2.length()-1; j >= 0; j-- ) {
            two += (twoArr[j]-'0') * n;
            n *= 2;
        }

        return Integer.toBinaryString(two+one);
    }
}

 

 

이진수를 십진수로 직접 바꿔주는방법이다.

 

 

출처:프로그래머스