본문 바로가기
Problem Solving/Two pointers

[투 포인터] 백준 2467번: 용액 / 골드 5

by ggyongi 2021. 7. 29.
반응형

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

 

2467번: 용액

첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 -

www.acmicpc.net

n = int(input())
lst = list(map(int, input().split()))

if lst[0] >= 0:  # all elem is positive
    print(lst[0], lst[1])
    quit()
if lst[-1] <= 0:  # all elem is negative
    print(lst[-2], lst[-1])
    quit()

left, right = 0, n-1
a, b = lst[left], lst[right]
val = abs(a+b)

while left+1 < right:
    if lst[left] + lst[right] > 0:
        right -= 1
        new = abs(lst[left] + lst[right])
        if new <= val:
            val = new
            a, b = lst[left], lst[right]

    elif lst[left] + lst[right] < 0:
        left += 1
        new = abs(lst[left] + lst[right])
        if new <= val:
            val = new
            a, b = lst[left], lst[right]

    else:  # sum = 0
        a, b = lst[left], lst[right]
        break

print(a, b)
 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글