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

 

2470번: 두 용액

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

www.acmicpc.net

풀이

투 포인터 알고리즘을 사용해서 풀어주었습니다.

정렬되지않은 용액의 값들이 입력값으로 주어지기에 .sort()를 이용해서 정렬해주었습니다.

투 포인터 알고리즘

https://sunghyun98.tistory.com/25

 

[알고리즘] 투 포인터

투 포인터 알고리즘은 배열에서 두 개의 포인터를 사용하여 특정 목표를 달성하기 위한 기법입니다. 일반적으로 정렬된 배열에서 특정 조건을 충족하는 요소를 찾거나 연속된 서브 배열의 합과

sunghyun98.tistory.com

코드

# 2470번 두 용액
import sys

n = int(input())
liquid = list(map(int, input().split()))
liquid.sort()
start = 0
end = n-1
closeToEnd = sys.maxsize 
ans = [0,0]
while start < end:
    total = liquid[start] + liquid[end]
    if abs(total) < closeToEnd:
        closeToEnd = abs(total)
        ans[0], ans[1] = liquid[start], liquid[end]
    elif total > 0:
        end -=1
    else:
        start += 1

print(*ans)

출력결과

 

개발자 성현