09009
[백준 2470번] 두 용액 본문
문제 보기
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 |
Comments