Algorithm

[투 포인트] 백준-2473 세 용액 골드3 (Python)

차노도리 2023. 4. 21. 20:28

백준-2473 : 세 용액

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

 

2473번: 세 용액

첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상

www.acmicpc.net

 

풀의

  • 투 포인트 알고리즘을 사용하기 위해 입력 받은 ph 정보를 정렬을 한다. 
  • 앞에서부터 기준을 하나씩 잡고 기준이 되는 음수값의 합을 구하기위해 투 포인트 알고리즘을 사용한다.

코드 (Python)

import sys

def input():
    return sys.stdin.readline().rstrip()

size = int(input())

ph_list = list(map(int, input().split(' ')))

ph_list.sort()

zero_sum = 3000000001
result = []

for i in range(0, size-2,1):
    j = i + 1
    z = size-1
    while (j < z):
        temp_sum = ph_list[i]+ph_list[j]+ph_list[z]
        if (zero_sum > abs(temp_sum)):
            zero_sum = abs(temp_sum)
            result = [ph_list[i], ph_list[j], ph_list[z]]
        if (temp_sum > 0):
            z -= 1
        elif (temp_sum < 0):
            j += 1
        else:
            print(result[0],result[1],result[2])
            exit(0)

print(result[0],result[1],result[2])