반응형
이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다.
문제.
설명
배열 A[] 에는 0과 1로만 이뤄진 요소들이 있습니다.
이 문제는 0이 1을 몇번 지나치는지 구하는 문제입니다.
위 예제로 설명해 보자면
A[] = 이 있습니다.
A[0] = 0 이므로 1을 총 3번 지납니다.
A[2] = 0 이므로 1을 총 2번 지납니다.
리턴 값은 5를 반환해 주면 됩니다.
즉, 0 기준으로 앞에 1이 얼만큼 있나 구하는 것입니다.
단, 카운트 값은 1,000,000,000을 초과하면 안됩니다.!
(문제 이해를 처음에 못해서 다른 사람이 설명 써 놓은걸 보고 알았습니다.)
결과
https://app.codility.com/demo/results/trainingYQ3JPK-U7Y/
소스코드
// you can write to stdout for debugging purposes, e.g.
// printf("this is a debug message\n");
int solution(int A[], int N) {
// write your code in C99 (gcc 6.2.0)
int i, count = 0;
unsigned int sum = 0;
for(i = N - 1; i >= 0; i--){
if(A[i] == 1)
count++;
else
sum += count;
}
if(sum > 1000000000 || sum < 0)
return -1;
return sum;
}
아주 쉽습니다. 배열 맨 끝에서 부터 1의 카운트 값을 세면 0이 총 몇번 지났는지 알 수 있습니다.
단, 예외처리 하는데 좀 애먹었습니다.
0이 1을 총 지난 값은 1,000,000,000을 넘지 말아야 하는데,
정수는 -2,147,483,648 ~ 2,147,483,647 까지 표현이 가능 합니다.
결과 값중 정수의 최대 값을 넘어버리는 결과 값도 도출이 되서 이를
unsigned int 로 바꿔서 해결 했습니다.
반응형
'코딩테스트 > Codility' 카테고리의 다른 글
[C++ 풀이] Codility - Lessons 5, (Prefix Sums) MinAvgTwoSlice (0) | 2019.08.04 |
---|---|
[C++ 풀이] Codility - Lessons 5, (Prefix Sums) GenomicRangeQuery (0) | 2019.08.01 |
[C언어 풀이] Codility - Lessons 4, (Counting Elements) MissingInteger (0) | 2019.02.25 |
[C언어 풀이] Codility - Lessons 4, (Counting Elements) MaxCounters (0) | 2019.02.22 |
[C언어 풀이] Codility - Lessons 4, (Counting Elements) FrogRiverOne (0) | 2019.02.22 |
댓글