
























주어진 정수의 2진 표현에서 가장 긴 zero sequence 구하기.
주어진 정수를 2로 나누어
재귀 함수 이용
function solution(N) {
const getBinary = (n) => {
let quot = Math.floor(n/2);
let mod = n % 2;
if(quot < 1) {
return mod + ``;
}else {
return getBinary(quot) + mod;
}
}
const binary = getBinary(N);
const result = binary
.replace(/0+$/g, '')
.split('1')
.sort( (a,b) => a.length - b.length )
.pop();
return result ? result.length : 0;
}
간만에 재귀함수를 만드려니 머리가 잠깐 멈추더라…
사실 처음 생각해 낸 프로세스에는 불필요한 프로세스가 끼어있었다.
.split('1') 이후에 emptry string을 제거하는 프로세스 즉,
.filter( entry => !!entry )가 있었는데, sorting 하면서 필요 없다는걸 깨닫고
프로세스에서 제거.
결과에는 영향을 주지 않지만 불필요한 연산이 끼어든다는 건, 생각의 흐름 속에서 깊이있는 사고가 되지 않고 있다는 것이거나 한 번에 생각할 수 있는 청크가 크지 않다는 것일 듯 하다.
2진수 변환을 굳이 재귀함수를 쓸 필요가 없었다는 게 뒤늦게 생각났다.
Number.prototype.toString(radix)를 사용하면 재귀함수를 사용할 이유가
없어진다…
(재귀함수를 오랜 만에 작성해봤다는데 의의를 두련다…)
Hero image from pixabay
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。