[백준 2467] 용액

1. 문제 설명

용액

2. 문제 분석

투 포인터를 통해 양쪽에서 범위 내 가장 큰 수, 가장 작은 수의 합을 기록해두면서 가장 0과 가까운 인덱스를 찾는다.

3. 나의 풀이

import sys

n = int(sys.stdin.readline().rstrip())
numbers = list(map(int, sys.stdin.readline().rstrip().split()))
left, right = 0, n-1
local_left, local_right = 0, n-1
local_sum = numbers[0] + numbers[n-1]
while left < right:
    sum = numbers[left] + numbers[right]

    if abs(sum) < abs(local_sum):
        local_sum = sum
        local_left = left
        local_right = right

    if sum > 0:
        right -= 1
    elif sum == 0:
        break
    else:
        left += 1

print(numbers[local_left], numbers[local_right])

좋은 웹페이지 즐겨찾기