풀이
특성값의 합이 기존에 구한 특성값의 합보다 작다고 항상 0에 가까운건 아니다.
ex) -1 + 1 = 0, -10 + 1 = -9
때문에 특성값 합의 절대값을 이용해 구해야한다.
새로운 특성값 합의 절대값이 기존 특성값 합의 절대값보다 작을 때, 새로운 특성값의 합과, 두 용액의 특성값 또한 새로 담아주어야 한다.
소스코드
#include <stdio.h>
#include <math.h>
int main(){
int N;
scanf("%d", &N);
int arr[N];
for (int i = 0; i < N; i++)
scanf("%d", &arr[i]);
int left = 0, right = N-1, sum = 2e9;
int left_val = arr[left], right_val = arr[right];
while (left < right){
int temp = arr[left] + arr[right];
if (abs(temp) <= sum){
sum = abs(temp);
left_val = arr[left];
right_val = arr[right];
}
temp < 0 ? ++left : --right;
}
printf("%d %d", left_val, right_val);
}
출처
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 2474] 세 용액 [C] (0) | 2021.08.26 |
---|---|
[백준 2470] 두 용액 [C] (0) | 2021.08.26 |
[백준 1005] ACM Craft [C] (0) | 2021.08.25 |
[백준 2239] 스도쿠 [C] (0) | 2021.08.25 |
[백준 1806] 부분합 [C] (0) | 2021.08.25 |