[백준] 세 용액 (2473)

크타·2022년 11월 29일
0

백준

목록 보기
8/11

https://www.acmicpc.net/problem/2473

이 문제를 보고
1. 완전 탐색인가? -> 5000 Combinaion 3 너무 큼 x
2. 투 포인터로 접근
3. 투 포인터에 이분 탐색을 써볼까?
하여 투 포인터 구현후 이분 탐색을 진행하였지만 투 포인터의 조건 자체가 잘못 되어 구현 실패.
다른 사람의 코드를 참고하니 애초에 끝에 있는 인자를 고정시키고, 투 포인터를 진행했으면 되었다.
살짝 허무했고 반성이 필요하다.

import sys

n = int(input())
nums = list(map(int, input().split()))
nums.sort()
s = 1e12
result = []
for idx in range(n - 2):
    start = nums[idx]
    left, right = idx + 1, n - 1
    while left < right:
        hap = start + nums[left] + nums[right]
        if abs(hap) < abs(s):
            s = hap
            result = [start, nums[left], nums[right]]
        if hap > 0:
            right -= 1
        elif hap < 0:
            left += 1
        else:
            result = [start, nums[left], nums[right]]
            result.sort()
            print(*result)
            sys.exit(0)

result.sort()
print(*result)

0개의 댓글