투포인터 : 정렬되어 있기 때문에 포인터 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])
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 백준 14567 선수과목 (Prerequisite) (0) | 2021.03.12 |
---|---|
[Python] 백준 2623 음악프로그램 (0) | 2021.03.10 |
[Python] 백준 2056 작업 (0) | 2021.03.10 |
[Python] 백준 1766 문제집 (0) | 2021.03.10 |
[Python] 백준 1516 게임 개발 (0) | 2021.03.10 |