💡문제접근
- 처음에는 음수와 양수 리스트를 별도로 만들어 연결 리스트를 이용해서 0에 가까운 값을 갖는 조합을 구하는 방식으로 접근했고 이 과정에서 2중 반복문을 사용했는데 2중 반복문때문에 시간초과(TLE)가 발생한 것 같다.
- 시간초과가 발생한 다음 아래 알고리즘 분류를 참고했는데 [투 포인터, 이분 탐색]으로 나와 있어서 다시 접근해서 풀었다.
- Python3에서 int의 최댓값을 구하려면
import sys
를 통해서 sys를 import한 다음 maxsize
를 입력하면 알 수 있다.
💡코드(메모리 : 42172KB, 시간 : 144ms)
import sys
input = sys.stdin.readline
N = int(input())
solution = list(map(int, input().strip().split()))
p1 = 0
p2 = len(solution) - 1
Min = sys.maxsize
while True:
if p1 >= p2:
break
if abs(solution[p1] + solution[p2]) < Min:
Min = abs(solution[p1] + solution[p2])
a = solution[p1]
b = solution[p2]
if solution[p1] + solution[p2] > 0:
p2 -= 1
elif solution[p1] + solution[p2] < 0:
p1 += 1
else:
break
print(a, b)
💡소요시간 : 20m