-
[JS] Binary Gapprograming/Algorithm 2018. 10. 23. 23:18
안녕하세요, Einere입니다.
오늘은 Codility의 1번째 문제인 Binary Gap코드에 대해 포스팅하려고 합니다.
process.stdin.setEncoding('utf8'); process.stdin.on('data', data => { let decimal = parseInt(data, 10); let binary = decimal.toString(2); let gap = 0; let maxGap = 0; console.log(binary); for(let e of binary){ if(e === "1"){ if(gap >= maxGap){ maxGap = gap; } gap = 0; } else{ gap++; } } console.log(maxGap); });
생각보다 간단합니다.
일단 2진수의 최고자릿수는 무조건 1이기 때문에, 0부터 계산하는 경우를 예외처리할 필요가 없습니다.
따라서 0의 개수를 세다가 1을 만나면 저장을 하고, 현재까지 발견된 gap보다 큰지 판별한 뒤, 업데이트하면 됩니다.
위의 코드는 node로 실행하여 콘솔로 입력받는 경우에 대한 코드입니다.
따라서 codility에서는 입력이 N으로 주어지므로, process관련 코드는 제외하시면 됩니다.
'programing > Algorithm' 카테고리의 다른 글
[Baekjoon] 알고리즘 기초 문제집 (0) 2019.03.10 [JS] memoization을 이용한 피보나치 수열 함수 구현 (0) 2019.03.09 [JS] 재귀함수를 이용한 병합정렬 (0) 2019.03.09 [Coding Test] codility (0) 2018.10.23 [Algorithm] infix를 postfix로 변환하기 (0) 2018.10.09 댓글