알고리즘 공부

[백준 2470번] 두 용액- java

철매존 2021. 9. 23. 20:05
728x90

문제 설명

1. N이 주어진다.

2. N개의 배열에 해당하는 -1000000000~1000000000까지 범위의 용액들이 주어진다.

3. 용액을 섞었을 합의 절대값이 0에 가장 가까운 값을 return하면 된다.

풀이 과정

 1. 이분 탐색 문제이다.

 2. 배열 정렬 후, 최대+최소를 구해서 이게 0보다 크면 최대값을 줄이고 0보다 작으면 최소값을 키운다.

 3. 그리고 구할 때 마다 정답을 바꾸어 주면 된다. (범위가 -1000000000~1000000000니까 최대값은 2000000000)

ex) -2 4 -99 -1 98 이렇게이면

정렬           -> -99, -2, -1, 4, 98

합              -> (-99+98) = -1 [정답 변경!]

0보다 작음   -> (-2+98) = 96  [정답 그대로]

0보다 큼      -> (-2+4) = 2      [정답 그대로]

0보다 작음   -> (-1+4) = 3      [정답 그대로]

..... 

 4. 풀이 과정만 생각해 내면 간단히 구할 수 있는 문제이다.

코드