[프로그래머스] 이진수 더하기.JS

ungnam·2023년 6월 8일

programmers level0

목록 보기
27/29

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

나의 풀이

function solution(bin1, bin2) {
    bin1 = "0".repeat(10 - bin1.length).concat(bin1);
    bin2 = "0".repeat(10 - bin2.length).concat(bin2);

    const result = Array(11).fill(0);
    for (let i = 9; i >= 0; i--) {
        result[i + 1] += (+bin1[i]) + (+bin2[i]);
        if (result[i + 1] >= 2) {
            result[i + 1] -= 2;
            result[i] += 1;
        }
    }
    return String(+result.join(""));
}

bin1bin2의 최대 길이는 10 -> 계산의 편의를 위해 repeat()으로 0의 개수를 채워준다.
bin1 + bin2를 의미하는 result 배열의 최대 길이는 11
✔ 문자열의 가장 끝부분부터 계산 -> 합이 2보다 크면 해당 자리수를 0으로 만들고 상위 자리수에 1을 더해줌

참고할 만한 풀이

function solution(bin1, bin2) {
    return (parseInt(bin1, 2) + parseInt(bin2, 2)).toString(2)
}

✔ 사실 위에서 했던 풀이는 toString의 인수로 숫자, 즉 2가 들어갈 때 10진수 숫자를 2진수의 문자열로 바꿔서 출력할 수 있다는 것을 까먹었기 때문에 일일이 계산을 한 것이었고... 이 방법이 가장 Simple/Best이지 않을까 생각한다.

profile
꾸준함을 잃지 말자.

0개의 댓글