
Codility의 제일 처음 문제라서 확실히 쉬웠다.
문제를 보고나서 제일 먼저 고려한 사항은
1. 입력 받는 정수 N의 범위는 1~21억이므로 Bit Integer에 대한 고려는 할 필요가 없음
2. number type인 N을 string으로만 빠르게 변환할 수 있으면 1과 1 사이에 0이 제일 많은 경우는 O(n)으로 탐색이 가능할 것이라 판단
3. 1과 1사이에 0이 없는 경우에 대해서만 예외 처리를 해주면 되겠네?
였다.
1번은 구글링을 통해 (N >>> 0).toString(2)로 간단하게 해결이 가능했고,
2번은 for문 하나로 maxGap과 currentGap 변수를 이용해 해결했다.
3번은 return에 3항 연산자로 처리했고.
코드는 아래와 같다.
|
function solution(N) {
const binary = (N >>> 0).toString(2);
let maxGap = Number.MIN_VALUE;
let currentGap = 0;
for (let index = 0; index < binary.length; index += 1) {
if (binary.charAt(index) === '1') {
if (maxGap < currentGap) {
maxGap = currentGap;
}
currentGap = 0;
} else {
currentGap += 1;
}
}
return maxGap === Number.MIN_VALUE ? 0 : maxGap;
}
|
결과

아래에 있는 것들 하나 둘 씩 찍먹 해보고 있는데 어렵더라. 걱정이다.
'공부 > 알고리즘' 카테고리의 다른 글
| Codility - Lesson 4 : MissingInteger (0) | 2022.03.28 |
|---|---|
| Codility - Lesson 4 : MaxCounters (0) | 2022.03.24 |
| Codility - Lesson 4: FrogRiverOne (0) | 2022.03.24 |
| Codility - Lesson 3 : PermMissingElem (0) | 2022.03.22 |
| Codility - Lesson 2 : OddOcurrencesInArray (0) | 2022.03.20 |