https://www.acmicpc.net/problem/2473
풀이
투포인터 문제인 용액 시리즈이다.
3개의 용액의 값을 합한 값이 최대한 0에 가깝게 나오도록 용액을 고른 뒤. 값을 오름차순으로 출력하는것이 문제의 목표이다.
1개의 용액은 완전탐색을 통해서 뽑고 나머지 2개의 용액은 투 포인터로 뽑아줄 것이다.
투 포인터 알고리즘
https://sunghyun98.tistory.com/25
코드
# 2473번 세 용액
# 투포인터와 완전탐색 사용.
import sys
n = int(input())
liquid = list(map(int, input().split()))
# 정렬이 안되어있기에 정렬 우선.
liquid.sort()
min_sumOfLiquid_2 = sys.maxsize
ans = []
if n == 3:
print(*liquid)
else:
# 남은 용액이 3개밖에 없을 경우. 더 이상 pop하지 않는다.
for i in range(n-2):
tmp = liquid.pop()
start = 0
end = len(liquid)-1
while start < end:
sumOfLiquid_2 = liquid[start] + liquid[end] + tmp
if abs(sumOfLiquid_2) < min_sumOfLiquid_2:
min_sumOfLiquid_2 = abs(sumOfLiquid_2)
ans = [liquid[start], liquid[end], tmp]
if sumOfLiquid_2 > 0:
end -= 1
else:
start += 1
if sumOfLiquid_2 == 0:
break
if sumOfLiquid_2 == 0:
break
print(*ans)
출력결과
'백준 > 투 포인터' 카테고리의 다른 글
[백준][Python] 1253번 좋다 - 코팩 (0) | 2023.08.20 |
---|---|
[백준][Python] 14921번 용액 합성하기 - 코팩 (0) | 2023.08.14 |
[백준][Python] 3649번 로봇 프로젝트 - 코팩 (0) | 2023.08.11 |
[백준][Python] 2470번 두 용액 - 코팩 (0) | 2023.08.09 |
[백준][Python] 2467번 용액 - 코팩 (0) | 2023.08.09 |