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

2467 - 용액

by HDobby 2023. 8. 2.

https://www.acmicpc.net/problem/2467

 

2467번: 용액

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

www.acmicpc.net

생각해보기

  • 작은 곳과 큰 곳에서 시작해서 점차 가운데로 가면 될 것 같다.
  • 투 포인터를 사용하자.

코드

#include<iostream>
#include<vector>
#include<cmath>

using namespace std;

int N;
vector<int> water;

void input(){
    cin>>N;

    water.resize(N);
    for(int i=0;i<N;++i)
        cin>>water[i];
}

void solution(){
    int l=0, r=N-1;
    int lans = 0, rans = 0;
    int ans = 2'111'111'111;

    while(l<r){
        int cost = water[l] + water[r];

        if(abs(cost) <= ans){
            lans = l;
            rans = r;
            ans = abs(cost);
        }

        if(cost <= 0)
            ++l;
        else
            --r;
    }

    cout<<water[lans]<<" "<<water[rans]<<'\n';
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    input();
    solution();

    return 0;
}

728x90

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

2138 - 전구와 스위치  (0) 2023.08.06
7682 - 틱택토  (0) 2023.08.04
5972 - 택배 배송  (0) 2023.07.26
1943 - 동전 분배  (0) 2023.07.25
14719 - 빗물  (0) 2023.07.25

댓글