Study with me/프로그래머스 L0 마스터하기

프로그래머스 - L0 이진수더하기

외계나무 2024. 4. 10. 15:10

프로그래머스 - level 0 이진수 더하기

Integer.parseInt() 기능을 까맣게 잊고 있다가 검색의 도움을 받았다.

그렇다.. public static int parseInt(String s, int radix) 였던 것이다... 

class Solution {
    public String solution(String bin1, String bin2) {
        String answer = "";
        int a = Integer.parseInt(bin1, 2);
        int b = Integer.parseInt(bin2, 2);
        int c = a+b;
        while(true) {
            if(c==1) {
                answer =  1 + answer;
                break;
            }
            answer = (c%2) + answer;
            c /= 2;
        }
        return answer;
    }
}

여튼 그 이후에는 다시 10진수 -> 2진수 메서드가 기억나지 않아서 그냥 정석대로 풀었다.

근데 테스트 케이스 5에서 시간이 너무 오래걸리더니 시간 초과 실패가 떴다. 왜일까... 

class Solution {
    public String solution(String bin1, String bin2) {
        String answer = "";
        int a = Integer.parseInt(bin1, 2);
        int b = Integer.parseInt(bin2, 2);
        int c = a+b;
        if(c==0) return "0";
        while(true) {
            if(c==1) {
                answer =  1 + answer;
                break;
            }
            answer = (c%2) + answer;
            c /= 2;
        }
        return answer;
    }
}

응~ 0 포함~ 0도 있을 수 있음~~~~ 에라이.

한 줄 짜리 코드도 있길래 가져와 봄. toString도 진법을 파라미터로 줄 수 있는 모양... Integer 클래스의 메서드들은 진법 변환이 되는지 확인부터 해보고 써야겠네.

return Integer.toString(Integer.parseInt(bin1, 2) + Integer.parseInt(bin2, 2), 2);