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 |
댓글