PS/Baekjoon Online Judge

[백준 2467] 용액 [C]

kimyoungrok 2021. 8. 26. 05:45

백준 - 2467


풀이

특성값의 합이 기존에 구한 특성값의 합보다 작다고 항상 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);
}

출처

 

2467번: 용액

첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 -

www.acmicpc.net

'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