코딩문제풀이/Baekjoon

[Python_Search] 백준 2470번 : 두 용액

코딩하는 포메라니안 2021. 8. 21. 22:36

1. 문제

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

 

2470번: 두 용액

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

www.acmicpc.net

 

 

 

2. 풀이 과정

n = int(input())
A = list(map(int, input().split()))
A.sort()

l = 0
r = n-1
result = [A[l], A[r]]

while l < r:
  a = A[l] + A[r]
  if abs(a) < abs(sum(result)): #절댓값이 제일 작은 값 저장
    result = [A[l], A[r]]

  if a == 0:
    break
  elif a < 0: #합이 음수면 0에 가까워지기 위해서 음수의 절댓값을 줄인다.
    l += 1
  else: #합이 양수면 0에 가까워지기 위해서 양수의 절댓값을 줄인다.
    r -= 1

print(*(a for a in result))