[Python] 백준 2470: 두 용액

다미·2022년 9월 22일
0

백준

목록 보기
6/15
post-thumbnail

2470번: 두 용액

문제

코드

''' baekjoon - 2470
* sorting, binary search, pointer
'''

# input
from sys import stdin
n = int(stdin.readline())
sol = list(map(int, stdin.readline().split()))

# sort
sol.sort()

# pointer
l = 0
r = n -1

# standard (dif값을 최대한 크게 설정)
dif = 2000000000

# sol
while l < r:
    s_l = sol[l]
    s_r = sol[r]
    
    tmp = s_l + s_r
    
    if abs(tmp) < dif:
        dif = abs(tmp)
        result = [s_l, s_r]
        
    if tmp < 0:
        l += 1
    else:
        r -= 1

print(result[0], result[1])

해설

산성은 양수, 알칼리성은 음수로 나타내며 두 용액을 섞어 최대한 0에 가까운 용액으로 만들어야 하는 문제이다. 우선 입력 값(용액 특성값)을 리스트로 받아 오름차순으로 정렬해준다. 그리고 포인터를 이용해 왼쪽 알칼리성을 가리키는 포인터 하나, 오른쪽 산성을 가리키는 포인터 하나 총 2개를 이용해 서로 더해준 후, 차이(dif)가 적게 나는 것을 result에 저장해준다.

0개의 댓글