-
[Python] 백준 2470 두 용액알고리즘/문제풀이 2021. 10. 30. 00:15728x90
1. 문제 링크
https://www.acmicpc.net/problem/2470
2. 문제 요약
두 용액을 혼합하여 0에 가장 가까운 용액 만들기
3. 아이디어 정리
- 투 포인터 이용
- 합이 0보다 큰 경우 right - 1
- 합이 0보다 작은 경우 left + 1
4. 문제 풀이
4-1. 내 풀이
import sys n = int(sys.stdin.readline()) arr = list(map(int, sys.stdin.readline().split())) arr.sort() left = 0 right = len(arr) - 1 result = int(1e10) ans = [] while left < right: temp = arr[left] + arr[right] # 지금까지 합이 가장 작은 경우 갱신 if result > abs(temp): result = abs(temp) ans = [arr[left], arr[right]] # 양수이면 right -1 if temp > 0: right -= 1 # 음수이면 left +1 elif temp < 0: left += 1 # 0이 나온 경우 그만 else: break print(*ans)
5. 결론
- 투 포인터를 이용하는 문제
'알고리즘 > 문제풀이' 카테고리의 다른 글
[Python] 백준 1476 날짜계산 (0) 2021.11.03 [Python] 백준 17086 아기 상어 2 (0) 2021.10.30 [Python] Programmers 더 맵게 (0) 2021.10.10 [Python] 백준 2234 성곽 (0) 2021.10.09 [Python] 백준 1174 줄어드는 숫자 (1) 2021.10.08 - 투 포인터 이용