[codility] BinaryGap
BinaryGap.js
const assert = require('assert');
function solution(N) {
const bin = N.toString(2);// 2진수 변환
const binArray = bin.split('');// 단어 하나씩 자르기
let zeroCount = 0;
let gapMax = 0;
binArray.forEach((element) => {
if (element === '0') {// gapCount
zeroCount += 1;
} else {
if (zeroCount > gapMax) {// 기존의 gap보다 현재의 gap이 더 크면
gapMax = zeroCount;
}
zeroCount = 0;// 초기화하고 다시 loop
}
});
return gapMax;
}
describe('Test Suite', () => {
it('case 1', () => {
assert.equal(2, solution(9));
});
it('case 2', () => {
assert.equal(4, solution(529));
});
it('case 3', () => {
assert.equal(1, solution(20));
});
});
문제 설명
A binary gap within a positive integer N is any maximal sequence of consecutive zeros that is surrounded by ones at both ends in the binary representation of N.
For example, number 9 has binary representation 1001 and contains a binary gap of length 2. The number 529 has binary representation 1000010001 and contains two binary gaps: one of length 4 and one of length 3. The number 20 has binary representation 10100 and contains one binary gap of length 1. The number 15 has binary representation 1111 and has no binary gaps. The number 32 has binary representation 100000 and has no binary gaps.
Write a function:
class Solution { public int solution(int N); }
that, given a positive integer N, returns the length of its longest binary gap. The function should return 0 if N doesn't contain a binary gap.
For example, given N = 1041 the function should return 5, because N has binary representation 10000010001 and so its longest binary gap is of length 5. Given N = 32 the function should return 0, because N has binary representation '100000' and thus no binary gaps.
Write an efficient algorithm for the following assumptions:
N is an integer within the range [1..2,147,483,647].
Eslint를 이용해서 airbnb의 코딩컨벤션을 지켜보았다. 생각보다 규칙이 엄청 많은 것 같다. 자주 코딩하면서 눈과 손으로 익혀야겠다.
자바에서 주로 쓰던 foreach문의 방식이 달라서 찾아보다가 arrow function의 존재를 알아냈다. (뭔가 말투가 이상하네 발견…?)
Array객체 안에 있어서 Array.js에 있을 줄 알았는데 forEach.js가 따로 있었다. 근데 잘 찾은건지는 잘 모르겠다; 으엑
https://www.npmjs.com/package/foreach
https://github.com/manuelstofer/foreach
찾다보니 뭔가 찾은 것 같긴한데 음…npm패키지인걸보니 아마도 커스텀버전…?이 아닐까 생각된다.
'Javasctript' 카테고리의 다른 글
ES6 모듈 시스템 (0) | 2021.02.28 |
---|---|
npm 관련 error solve (0) | 2019.10.23 |
[level 1] Collatz 추측 (4) | 2019.03.16 |
[codility] CyclicRotation (0) | 2019.03.14 |
Mocha를 이용해 Javascript 테스트 해보기 (0) | 2019.01.24 |