반응형
이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다.
문제
설명
배열앤 -1,000 ~ 1,000사이의 수가 랜덤으로 주어 집니다.
배열의 길이는 N 입니다.
P의 값중 가장 작은 값을 반환하면 되는데, P를 구하는 방법은 이렇습니다.
A[0] - A[1] + A[2] + A[3] + A[4] = P1.
(A[0] + A[1)] - (A[2] + A[3] + A[4]) = P2.
(A[0] + A[1] + A[2]) - (A[3] + A[4]) = P3.
(A[0] + A[1] + A[2] + A[3]) - A[4] = P4.
P값들 중 가장 작은 값을 반환 하면 됩니다.
단, P값은 절대 값으로 반환 존재해야 합니다.
결과
https://app.codility.com/demo/results/trainingRF95WS-FNF/
소스코드
int solution(int A[], int N) {
// write your code in C99 (gcc 6.2.0)
int i, sum = 0, result = 10000, min = 0, sum_A = 0;
for(i = 1; i < N; i++)
sum += A[i];
for(i = 0; i < N-1; i++){
min = (sum_A + A[i]) - sum;
sum_A += A[i];
sum -= A[i+1];
if(min < 0)
min *= -1;
if(result > min)
result = min;
}
return result;
}
우선 전체 배열 요소의 합을 구한 후 첫 요소부터 빼가면서 P값을 구했습니다.
주의해야 할 점은 배열 요소중 -1,000 단위도 있어서 많이 했갈렸는데,
결국 P값만 절대 값만 되면 되므로 신경은 안써도 됐습니다.
반응형
'코딩테스트 > Codility' 카테고리의 다른 글
[C언어 풀이] Codility - Lessons 4, (Counting Elements) FrogRiverOne (0) | 2019.02.22 |
---|---|
[C언어 풀이] Codility - Lessons 4, (Counting Elements) PermCheck (0) | 2019.02.22 |
[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 |
댓글