본문 바로가기
Study/Coding Test

[백준] 2295 - 세 수의 합 Python

by 들숨날숨흡 2023. 7. 4.
728x90

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

 

2295번: 세 수의 합

우리가 x번째 수, y번째 수, z번째 수를 더해서 k번째 수를 만들었다라고 하자. 위의 예제에서 2+3+5=10의 경우는 x, y, z, k가 차례로 1, 2, 3, 4가 되며, 최적해의 경우는 2, 3, 4, 5가 된다. k번째 수가 최

www.acmicpc.net

 

import sys

# N개의 자연수 중 x, y, z 3개의 수를 뽑아서 x+y+z인 d가 N개의 포함되는 경우 중 가장 큰 d를 찾아라
# x+y+z=d > x+y=d-z

input = sys.stdin.readline

res = 0  #가장 큰 D
N = int(input())
arr = [int(input()) for _ in range(N)]
arr.sort()
arr2 = list()

for i in range(N):
    for j in range(i, N):
        arr2.append(arr[i] + arr[j])

arr2.sort()
#print(arr2)

for i in range(N):
    for j in range(i, N):
        num = arr[j] - arr[i] #x+y 찾기
        start = 0
        end = len(arr2) - 1
        while start <= end:
            mid = (start + end) // 2
            if num > arr2[mid]:
                start = mid + 1
            elif num < arr2[mid]:
                end = mid - 1
            else:
                res = max(res, arr[j])
                break

print(res)
728x90