코딩테스트 연습/프로그래머스 LV.0

[프로그래머스] Lv.0 이진수 더하기 - 자바(Java)

5ein 2024. 4. 15. 22:56

문제: 코딩테스트 연습 - 이진수 더하기 | 프로그래머스 스쿨 (programmers.co.kr)

문제설명

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


제한사항

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

입출력 예

bin1 bin2 result
"10" "11" "101"
"1001" "1111" "11000"

나의 문제 풀이

//나의 풀이1
//Integer.parseInt(String 문자열, int 진수) : int 진수를 10진수로 변환 시켜줌
//Integer.toBinaryString(int값) : int값을 2진수로 변환 시켜줌	
class Solution {
	public String solution(String bin1, String bin2) {
		String answer = "";
		int num1 = Integer.parseInt(bin1, 2); //2진수 10진수 변환
		int num2 = Integer.parseInt(bin2, 2); //2진수 10진수 변환
		int sum = num1 + num2;
		answer = Integer.toBinaryString(sum); //10진수 2진수 변환
		return answer;
	}
}

//나의 풀이2
class Solution {
    public String solution(String bin1, String bin2) {
        String answer = "";
        answer = Integer.toBinaryString(Integer.parseInt(bin1, 2) + Integer.parseInt(bin2, 2));
        return 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);
    }
}

느낀점

문제를 풀면서 아래의 진수 변환 코드를 다시 공부 할 수 있었다!

Integer.parseInt(String 문자열, int 진수) : int 진수를 10진수로 변환 시켜줌
Integer.toBinaryString(int값) : int값을 2진수로 변환 시켜줌

 

다른사람의 풀이에서 BigInteger을 이용한 방법도 흥미로웠다!


문제 출처: 코딩테스트 연습 | 프로그래머스 스쿨 (programmers.co.kr)