프로그래밍/Python

[Python] 백준 2476 용액

모영이 2021. 3. 30. 10:56

 

2467번: 용액

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

www.acmicpc.net

투포인터 : 정렬되어 있기 때문에 포인터 2개가 양쪽 끝에서 부터 만날때까지 조여오면된다. sum_waters에 넣고 마지막에 정렬하려했는데, min_water에 최솟값 1개만 저장하면되기 때문에 sort를 사용안했다.

 

전체코드

import sys

input = sys.stdin.readline

N = int(input())
waters = list(map(int, input().split()))
# print(N, waters)
sum_waters = []

sp, ep = 0, len(waters) - 1
min_water = (waters[sp], waters[ep], sys.maxsize)
while sp < ep:
    sum_water = waters[sp] + waters[ep]
    if abs(sum_water) < min_water[2]:
        min_water = (waters[sp], waters[ep], abs(sum_water))
    if sum_water < 0:
        sp += 1
    elif sum_water > 0:
        ep -= 1
    else:
        break
print(min_water[0], min_water[1])