반응형
이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다.
문제.
설명
쉽게 설명하자면 정수N을 2진수로 표현했을때 1과 1사이의 0의 Gap 즉, 0의 갯수를 구하는 문제 입니다.
단, 1과 1사이의 0의 갯수 중 가장 긴 값을 반환해야 합니다.
ex)
10000001001 -> 6
100000 -> 0(1과 1사이의 0의 갯수가 아님으로)
111110 -> 0(마찬가지)
1011 -> 1
1010101 -> 1
이정도 예시와 결과면 충분히 이해하셨으라 생각합니다.
저는 C언어로 문제를 풀었고 앞으로도 C로 풀 생각입니다.
소스코드
int solution(int N) {
int num = 0, count = 0, flag = 0, result = 0;
do {
num = N % 2;
N /= 2;
if (num == 1)
flag++;
if(flag == 1 && num == 0){
count++;
}else if(flag == 2){
if(result < count){
result = count;
count = 0;
flag = 1;
}else{
count = 0;
flag = 1;
}
}
} while (N > 0);
return result;
}
저는 flag를 이용해 1을 만남 시점에서 count를 세게 했으며 flag가 2가 되면 초기화 하는식으로 했습니다.
do ~ while() 문을 통해 2진수의 마지막 자릿 수 까지 계산하도록 했습니다.
결과
https://app.codility.com/demo/results/trainingBH5FV5-DWT/
반응형
'코딩테스트 > Codility' 카테고리의 다른 글
[C언어 풀이] Codility - Lessons 3, (Time Complexity) PermMissingElem (0) | 2019.02.21 |
---|---|
[C언어 풀이] Codility - Lessons 3, (Time Complexity) Frog Jmp (0) | 2019.02.21 |
[C언어 풀이] Codility - Lessons 2, (Arrays) CyclicRotation (0) | 2019.02.19 |
[C언어 풀이] Codility - Lessons 2, (Arrays) OddOccurrencesInArray (0) | 2019.02.19 |
Codility 사용 방법(이용 방법) (1) | 2019.02.16 |
댓글