
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
function solution(bin1, bin2) {
let b1 = parseInt(bin1, 2);
let b2 = parseInt(bin2, 2);
return (b1 + b2).toString(2);
}
원래는 이진수 로직을 쌩으로 작성하고 있었다. 그러던 중 머가 꼬여서 잘 안댔음. 킹받아서 찾아보니까... 내가 원래 알던 parseInt와 toString이 낯설게 느껴질만큼 새로운 내용들을 알게 되었다.
parseInt()
parseInt()함수는 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환합니다.
parseInt(string) | parseInt(string, radix)
string: 파싱할 값, 문자열이 아닐 경우 ToString() 추상 연산을 사용해 문자열로 변환한다. 문자열의 선행 공백은 무시한다.radix: string의 진수를 나타내는 2부터 36까지의 정수이다. 기본값이 10이 아님에 주의. Number 자료형이 아닌 경우 Number로 변환한다. Return
→ 주어진 string에서 파싱한 정수입니다.
🤷🏻 NaN이 반환되는 경우
Number.prototype.toString()
toString()메서드는 특정한 Number 객체를 나타내는 문자열을 반환합니다.
numObj.toString([radix]);
radic: 수의 값을 나타내기 위해 사용되기 위한 기준을 정하는 2와 36사이의 정수. (진수를 나타내는 기수의 값.)Return
function solution(bin1, bin2) {
let temp = Number(bin1) + Number(bin2);
temp = [...temp.toString()].reverse().map((v) => +v);
for (let i = temp.length; i < 11; i++) {
temp.push(0);
}
for (let i = 0; i < temp.length; i++) {
if (temp[i] === 2) {
temp[i] = 0;
temp[i + 1]++;
} else if (temp[i] === 3) {
temp[i] = 1;
temp[i + 1]++;
}
}
return Number(temp.reverse().join("")).toString();
}
function solution(bin1, bin2) {
return (parseInt(bin1, 2) + parseInt(bin2, 2)).toString(2)
}
이렇게 하면 문제 푸는 의미가 있냐 없냐로 박터지게 싸우고들 있더라.
있는거 쓰자~... 모르던 것도 많은걸...