[백준 2473] 세 용액

1. 문제 설명

세 용액

2. 문제 분석

용액 문제와 동일한 매커니즘. 용액 하나를 고정해두고 for 문을 통해 mid, right를 구해 0과 가장 가까운 조합을 answer 리스트에 기록한다.

3. 나의 풀이

import sys

n = int(sys.stdin.readline().rstrip())
numbers = list(map(int, sys.stdin.readline().rstrip().split()))
numbers.sort()
local_diff = sys.maxsize

for left in range(n-2):
    mid, right = left+1, n-1

    while mid < right:
        diff = numbers[left] + numbers[mid] + numbers[right]

        if abs(diff) < local_diff:
            local_diff = abs(diff)
            answer = [numbers[left], numbers[mid], numbers[right]]

        if diff == 0:
            print(*answer)
            sys.exit(0)
        elif diff > 0:
            right -= 1
        else:
            mid += 1

print(*answer)

좋은 웹페이지 즐겨찾기