Problem Solving

boj 2467 : 용액

1ssrek 2025. 3. 16. 23:00

boj 2467 : 용액

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

 

정렬된 정수 배열이 주어진다.

주어진 배열에서 2개의 정수를 뽑아 그 합을 0에 가장 가깝게 만들면 된다.

기본적으로 2개 모두 뽑아 확인하는 방법은 N^2이고, N이 10만이므로 시간 초과가 난다.

two pointer 방법을 이용한다.

 

*L+*R이 0보다 크다면 R을 감소시키며, *L+*R이 0보다 작다면 L을 증가시킨다.

 

Greedy + Two Pointer로 문제를 해결할 수 있다.

Greedy Solution으로 문제를 해결하기 위해서는 "순간 최적이 전체 최적이다."라는 것을 증명해야하나,

직관적으로만 알고, 증명하진 못하였다. 

-> Prove By Solving으로 증명했다^^;