본문 바로가기
코딩테스트 연습

이진수 더하기

by 신재은👩🏼‍💻 2024. 5. 5.

https://school.programmers.co.kr/learn/courses/30/lessons/120885

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

몰랐다 이렇게 풀 수 있는 줄...

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

 

String을 Integer로 형변환 한 뒤 계산해서 그걸 이진수로 바로 바꿀 수가 있구나...

 

위가 더 맞다고 생각하지만 아래처럼도 가능하다.

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

 

나는...

class Solution {
    public String solution(String bin1, String bin2) {
        StringBuilder sb = new StringBuilder();
        int elementLength = 0;
        if(bin1.length() - bin2.length() >= 0) {
            elementLength = bin1.length();
            while (bin2.length() < bin1.length()) bin2 = "0" + bin2;
        } else {
            elementLength = bin2.length();
            while (bin1.length() < bin2.length()) bin1 = "0" + bin1;
        }
        int remainder = 0;

        for(int i=elementLength-1; i>=0; i--) {
            int target = (bin1.charAt(i)-'0')+(bin2.charAt(i)-'0')+remainder;
            if(target == 3) {
                sb.append(1);
                remainder = 1;
            } else if(target == 2) {
                sb.append(0);
                remainder = 1;
            } else {
                sb.append(target);
                remainder = 0;
            }   
        }
        if(remainder == 1) sb.append(1);

        return sb.reverse().toString();
    }
}

 

이렇게 풀었다...

'코딩테스트 연습' 카테고리의 다른 글

부족한 금액 계산하기  (0) 2024.05.05
컨트롤 제트  (0) 2024.05.05
문자열 내림차순으로 배치하기  (0) 2024.05.04
제일 작은 수 제거하기  (0) 2024.05.04
가운데 글자 가져오기  (0) 2024.05.04