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

[백준 14921] 용액 합성하기

by m2162003 2020. 11. 27.

www.acmicpc.net/problem/14921

 

14921번: 용액 합성하기

홍익대 화학연구소는 다양한 용액을 보유하고 있다.  각 용액은 -100,000,000부터 100,000,000사이의 특성 값을 갖는데, 같은 양의 두 용액을 혼합하면, 그 특성값은 두 용액의 특성값의 합이 된다. 당

www.acmicpc.net

대표적인 투포인터 문제이다.

입력이 오름차순으로 제시되기 때문에 굳이 정렬을 안해도 된다.

 

0과 n-1번째 인덱스를 각각 left, right 포인터로 잡고 sum 값에 따라 left++ right--을 해준다.

#include <stdio.h>
#include <limits.h>
#include <math.h>

using namespace std;

int n, result = INT_MAX;
int arr[100000];
int main(void)
{
  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 (sum > 0)
    {
      r--;
    }
    else if (sum < 0)
    {
      l++;
    }
    else
    {
      printf("0\n");
      return 0;
    }

    if (abs(sum) < abs(result))
    {
      result = sum;
    }
  }

  printf("%d\n", result);
  return 0;
}

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

[백준 1253] 좋다  (0) 2020.11.27
[백준 2467] 용액  (0) 2020.11.27
[백준 1822] 차집합  (0) 2020.11.27
[백준 15486] 퇴사 2  (0) 2020.11.26
[백준 19947] 투자의 귀재 배주형  (0) 2020.11.26

댓글