https://www.acmicpc.net/problem/2473
2473번: 세 용액
첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상
www.acmicpc.net
유형 : 투포인터 (이분탐색도 가능하다는데 아직 잘..)
난이도 : G3 (G4가 더 맞다 생각이 든다)
전형적인 투포인터 문제입니다
투포인터 알고리즘을 모르시면 두 용액 문제 및 알고리즘을 보고 오시면 될거 같네요
두 용액 문제에서 하나가 더 늘었으므로 하나를 빼줘서 계산하시면 됩니다.
네 용액이면...좀 골때리겠네..
import sys
input = sys.stdin.readline
n = int(input())
nums = list(map(int, input().split()))
nums.sort()
min_mix = 20e9+1
if nums[0] > 0:
ans = nums[0:3]
elif nums[-1] < 0:
ans = nums[-3:]
else:
for i in range(len(nums)-2):
liqud = nums.pop(0)
n -= 1
start, end = 0, n-1
while start < end:
temp = liqud + nums[start] + nums[end]
if abs(temp) < min_mix:
ans = [liqud, nums[start], nums[end]]
min_mix = min(abs(temp), min_mix)
if temp > 0:
end -= 1
elif temp == 0:
break
else:
start += 1
print(*ans)
제건 파이썬으로 안돌아갑니다 시간 초과라 ㅠㅠ..
pypy3로 돌렸고..
아마 더 좋은 코드는 널렸을거에요
'PS > Blind' 카테고리의 다른 글
[백준] 29261 - 소수 세기 (0) | 2023.09.07 |
---|---|
백준 19134 - 2x + 2 (0) | 2023.09.05 |
백준 1511 - 숫자 만들기 (0) | 2023.07.06 |
백준 1240 - 노드사이의 거리 (0) | 2023.07.05 |
백준 17616 - 등수 찾기 Python (0) | 2023.07.05 |