09009

[백준 2470번] 두 용액 본문

Algorithm/투 포인터
[백준 2470번] 두 용액
09009

문제 보기

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

 

2470번: 두 용액

첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00

www.acmicpc.net

 

문제 해결

입력한 리스트를 정렬 후 첫번 째 원소와 마지막 원소의 절댓값 합(answer)을 정답의 초기값으로 설정한다.

 

while 반복문을 돌리면서 두 용액의 절댓값 합이 초기에 설정했던 answer보다 작을 경우,

초기에 설정했던 것보다 0에 가까운 것이므로  answer와 final을 수정해주면 된다.

 

 

소스 코드

n = int(input())
arr = sorted(list(map(int,input().split())))

left = 0
right = n-1

answer = abs(arr[left] + arr[right])
final = [arr[left], arr[right]]

while left < right:
    temp = arr[left] + arr[right]
    if abs(temp) < answer:
        answer = abs(temp)
        final = [arr[left], arr[right]]
        if answer == 0:
            break
    if temp < 0:
        left += 1
    else:
        right -= 1       

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

'Algorithm > 투 포인터' 카테고리의 다른 글

[백준 1806번] 부분합  (0) 2023.09.08
[백준 3273번] 두 수의 합  (0) 2023.09.08