자료구조 · 알고리즘
[Codewars - 7 kyu] Ones and Zeros
eblee
2020. 1. 17. 14:36
이 문제는 배열로 표현된 2진수를 10진수로 변환하는 문제입니다.
Testing: [0, 0, 0, 1] ==> 1
Testing: [0, 0, 1, 0] ==> 2
Testing: [0, 1, 0, 1] ==> 5
Testing: [1, 0, 0, 1] ==> 9
Testing: [0, 0, 1, 0] ==> 2
Testing: [0, 1, 1, 0] ==> 6
Testing: [1, 1, 1, 1] ==> 15
Testing: [1, 0, 1, 1] ==> 11
문자열 이진수를 십진수로 변환하는 방법
자바스크립트에는 문자열을 숫자로 바꿔주는 메서드인 parseInt가 존재합니다. parseInt에 인자로 숫자로 변환할 문자열과 radix를 적어, 몇 진수로 표현되어 있는지 알려주면 변환하여 정수로 반환해 줍니다.
parseInt(string, radix);
radix는 2와 36 사이의 진수(수의 진법 체계에 기준이 되는 값)입니다.
이를 활용하여 간단하게 문제를 풀 수 있습니다.
해답 코드를 확인하려면 더보기를 눌러주세요.
더보기
const binaryArrayToNumber = arr => parseInt(arr.reduce((acc, cur) => acc + cur, ''), 2);
저는 reduce를 사용하여 배열의 인자를 문자열로 합쳐주었는데, 간단하게 join('')을 사용하면 동일하게 해결 가능합니다.
const binaryArrayToNumber = arr => parseInt(arr.join(''), 2);