Coding-Test
[코딜리티]Binary-Gap
갸릉o
2022. 2. 26. 16:59
문제 : Binary Gap 구하기
Input 값 N이 주어졌을때 , N을 이진 변환 한 값 중 1사이 0의 갯수를 구하라.
구해진 binary gap 중 가장 큰 값을 return 해 주면 된다.
N : 1 - 2,147,483,647 사이의 정수
ex) input 1 : 5,204 ( 0b1010001010100 )
binary_gap1 : 3
input 2 : 1412 (0b1010000100)
binary_gap 2 : 4
#include <stdio.h>
int solution(int N)
{
int gap = 0;
int length = 0;
int result = 0;
int flag = 0;
int status_old = 0;
int GapLoc = 0;
result = N;
while(1)
{
result = result/2;
length++;
if(result == 0)
{
break;
}
}
for(int i = 0; i<length;i++)
{
int status = (N>>i)&(0x01);
if((status == 0)&&(status_old == 1))
{
flag = 1;
GapLoc = 0;
}
else if((status == 1)&&(status_old == 0))
{
flag = 0;
if(gap<GapLoc)
{
gap = GapLoc;
}
}
else
{
/* hold flag */
}
status_old = status;
if(flag == 1)
{
GapLoc++;
}
}
printf("length : %d \n",length);
printf("binaray gap : %d",gap);
return gap;
}