https://hwan-shell.tistory.com/34
설명
배열 -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값은 절대 값으로 반환 존재해야 합니다.
소스코드
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값만 절대 값만 되면 되므로 신경은 안써도 됐습니다
'코딩테스트' 카테고리의 다른 글
소수 판별 (0) | 2024.09.15 |
---|---|
홀짝 (0) | 2024.09.15 |
Lessons 3, (Time Complexity) PermMissingElem (0) | 2024.09.14 |
Codility - Lessons 3, (Time Complexity) Frog Jmp (0) | 2024.09.14 |
Codility - Lessons 2, (Arrays) CyclicRotation (0) | 2024.09.14 |