1. 문제
양의 정수 N를 받아 이진수로 나타냈을 경우 1로 둘러싸인 연속된 0의 수를 구하라
예를 들어 10001일 경우 3을, 101001000일 경우 2를, 10000000일 경우 0를 반환하면 된다.
N의 범위는 1부터 2,147,483,647이며 함수의 형태는 아래와 같다.
int solution(int N);
2. 풀이
양의 정수를 받아 몫이 없을때까지 2로 나누며 나머지 값을 체크한다.
나머지 값의 경우 최초 1일 때부터 count를 시작하여 이후 1일 때까지 binary gap를 체크한다.
둘 이상의 binary gap이 존재할 경우 기존 binary gap 값과 비교하여 더 큰 값을 return value에 저장한다.
1이하 양의 정수의 경우 이 로직을 타지 않으므로 최초 return value는 0으로 설정한다.
3. 결과
해당 문제는 Performance 점수가 없으며 실행 결과 Correctness 100% 로 Task Score는 100 point가 되었다.
4. 코드 및 테스트 코드