문제: 코딩테스트 연습 - 이진수 더하기 | 프로그래머스 스쿨 (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을 이용한 방법도 흥미로웠다!
'코딩테스트 연습 > 프로그래머스 LV.0' 카테고리의 다른 글
[프로그래머스] Lv.0 로그인 성공? - 자바(Java) (0) | 2024.04.21 |
---|---|
[프로그래머스] Lv.0 치킨 쿠폰 - 자바(Java) (0) | 2024.04.18 |
[프로그래머스] Lv.0 A로 B 만들기 - 자바(Java) (0) | 2024.04.14 |
[프로그래머스] Lv.0 k의 개수 - 자바(Java) (0) | 2024.04.11 |
[프로그래머스] Lv.0 중복된 문자 제거 - 자바(Java) (0) | 2024.04.10 |