[알고리즘] 백준 - 두 용액
내 풀이
import sys
from collections import deque
from itertools import combinations
from itertools import permutations
import math
sys.setrecursionlimit(100000)
N = int(input())
arr = list(map(int, input().split()))
arr.sort()
answer = []
left, right = 0, len(arr) - 1
min_val = sys.maxsize
min_left, min_right = 0, 0
while left < right:
if arr[left] + arr[right] == 0:
min_left, min_right = left, right
break
elif abs(arr[left] + arr[right]) < min_val:
min_val = abs(arr[left] + arr[right])
min_left, min_right = left, right
else:
if arr[left] + arr[right] > 0:
right -= 1
else:
left += 1
print(arr[min_left], arr[min_right])
min_val은 최소 차이이다. 만약 두 용액의 차이가 최소 차이보다 작으면 최소차이를 갱신해주고, min_left, min_right도 갱신해준다. 다음 턴에서 만약 이 두 용액의 합이 양수 였으면 right -=1을 하고 음수였으면 left +=1을 해보면 된다.
Author And Source
이 문제에 관하여([알고리즘] 백준 - 두 용액), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@injoon2019/알고리즘-백준-두-용액저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)