본문 바로가기
알고리즘 문제풀이/백준

[백준 2467] 용액

by m2162003 2020. 11. 27.

www.acmicpc.net/problem/2467

 

2467번: 용액

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

www.acmicpc.net

용액 합성하기 문제와 매우 유사하다. 차이가 있다면 0에 가까운 합이 되는 값 자체를 묻는 거 정도?

sum을 확인하면서 l과 r이 업데이트 되기 때문에 처음에 result를 업데이트 시켜야 한다.

 

//용액
#include <stdio.h>
#include <limits.h>
#include <math.h>

using namespace std;

int arr[100000];
int result = INT_MAX, left, right;
int main(void)
{
  int n;
  scanf("%d", &n);

  for (int i = 0; i < n; i++)
  {
    scanf("%d", &arr[i]);
  }

  int l = 0, r = n - 1;

  while (l < r)
  {
    int sum = arr[l] + arr[r];

    if (abs(sum) < abs(result))
    {
      result = sum;
      left = l;
      right = r;
    }

    if (sum < 0)
    {
      l++;
    }
    else if (sum > 0)
    {
      r--;
    }
    else
    {
      printf("%d %d\n", arr[l], arr[r]);
      return 0;
    }
  }
  printf("%d %d\n", arr[left], arr[right]);
  return 0;
}

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 7785] 회사에 있는 사람  (0) 2020.11.28
[백준 1253] 좋다  (0) 2020.11.27
[백준 14921] 용액 합성하기  (0) 2020.11.27
[백준 1822] 차집합  (0) 2020.11.27
[백준 15486] 퇴사 2  (0) 2020.11.26

댓글