[파이썬] 백준 2473 : 세 용액 (골드3)
풀이
방향성 생각
- 정렬 이후 두 용액의 구한 후, 나머지 하나를 이분탐색으로 빠르게 찾기
- or 한 피벗의 값을 정해놓고 투포인터 진행
- 정렬이 되어있는 array에서 값을 늘리거나 줄이거나만 해야하므로 피벗, 피벗+1, 맨 끝을 정한다.
- l = pivot+1, r=맨끝 이렇게 정한 후 용액의 ph값에 따라서 l r 움직이기.
- 후자로 풀이 진행
전체코드
import sys
N = int(input())
arr = list(map(int, input().split()))
arr.sort()
temp = sys.maxsize
answer = []
for p in range(N-2):
l,r = p+1,N-1
while l < r:
idx = [p,l,r]
ph = sum(arr[i] for i in idx)
if abs(ph) < abs(temp):
temp = ph
answer = [arr[i] for i in idx]
if ph < 0:
l += 1
elif ph > 0:
r -= 1
else:
answer = [arr[i] for i in idx]
break
answer.sort()
print(*answer)
코멘트
- .
'Algorithm > etc' 카테고리의 다른 글
[파이썬] 백준 1644 : 소수의 연속합 (골드3) (0) | 2024.11.16 |
---|---|
[파이썬] 백준 2230 : 수 고르기(골드5) (0) | 2024.10.02 |
[파이썬] 백준 3151 : 합이 0 (골드4) (0) | 2024.10.02 |
[파이썬] 백준 1806 : 부분합 (골드4) (0) | 2024.08.02 |
[파이썬] 백준 11660 : 구간 합 구하기 5 (실버1) (0) | 2024.08.02 |
[파이썬] 백준 30804 : 과일탕후루 (실버2) (0) | 2024.06.11 |
[파이썬] 프로그래머스 : 유사 칸토어 비트열 (레벨3) (0) | 2024.06.10 |
댓글