![](https://blog.kakaocdn.net/dn/bkhfl6/btrxexGr9RE/EUnp0VBF0kIaTIV5Ku6koK/img.webp)
# 용액
import sys
input = sys.stdin.readline
N = int(input())
arr = list(map(int, input().split()))
left, right = 0, N-1
value = sys.maxsize
answer = []
while left < right:
if abs(arr[left]+arr[right]) <= value:
answer = [arr[left], arr[right]]
value = abs(arr[left]+arr[right])
if arr[left]+arr[right] < 0:
left += 1
elif arr[left]+arr[right] > 0:
right -= 1
else:
break
print(*answer)
투포인터
1. 처음과 끝의 인덱스를 left와 right으로 설정
2. left < right 일 동안
- 두 용액 합의 절댓값이 현재 value보다 작거나 같으면 answer에 두 용액, value에 현재 값
- 두 용액의 합이 0보다 작으면 left+=1
- 두 용액의 합이 0보다 크면 right-=1
- 두 용액의 합이 0이면 break
3. answer의 값 출력
용액이 정렬된 상태의 차이만 다른 같은 문제를 풀었었다.
[백준] 2470번 - 두 용액
[백준] 2470번 - 두 용액 (파이썬)
# 두 용액 import sys input = sys.stdin.readline N = int(input()) arr = list(map(int, input().split())) arr.sort() result = [] min_result = sys.maxsize sum = 0 left = 0 right = N-1 while left < righ..
2hs-rti.tistory.com
세 용액으로 같은 로직을 가지고 있는 문제도 풀었었다.
[백준] 2473번 - 세 용액 (파이썬)
[백준] 2473번 - 세 용액 (파이썬)
# 세 용액 import sys input = sys.stdin.readline N = int(input()) arr = list(map(int, input().split())) arr.sort() result = sys.maxsize three = [] for i in range(N-2): left = i+1 right = N-1 while l..
2hs-rti.tistory.com
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 3079번 - 입국심사 (파이썬) (0) | 2022.03.25 |
---|---|
[백준] 2343번 - 기타 레슨 (파이썬) (0) | 2022.03.25 |
[백준] 16562번 - 친구비 (파이썬) (0) | 2022.03.25 |
[백준] 14938번 - 서강그라운드 (파이썬) (0) | 2022.03.24 |
[백준] 8983번 - 사냥꾼 (파이썬) (0) | 2022.03.23 |