*문제 출처는 백준에 있습니다.
문제 제목: 두 용액 / 2470번 (골드 5단계)
문제 사이트: https://www.acmicpc.net/problem/2470
문제 설명

나의 풀이
def two_point(n, arr):
result = (arr[0], arr[-1]) # 초기값
min_result = abs(arr[0] + arr[-1]) # 절댓값 기준
left = 0 # 왼쪽
right = n - 1 # 오른쪽
while left < right:
current = arr[left] + arr[right]
abs_current = abs(current)
if abs_current < min_result:
min_result = abs_current
result = [arr[left], arr[right]]
if current < 0:
left += 1
elif current > 0:
right -= 1
else:
return [arr[left], arr[right]] # 가장 이상적인 경우
return result
def main():
n = int(input())
# 용액 배열
array = list(map(int, input().split()))
# 오름차순으로 정렬
# 왼쪽이 알칼리성 중 가장 낮고 오른쪽이 산성중 가장 큰 용액 순으로 정렬이 된다.
array.sort()
result = two_point(n, array)
print(result[0], result[1])
if __name__=="__main__":
main()

※ 알아야 할 것
투 포인터를 이용하여 왼쪽과 오른쪽을 점차 늘려가며 용액을 비교해나가면 됩니다!! 이렇게 풀게되면 시간 복잡도는 O(n)으로 해결하실 수 있습니다!
'Coding Test > 백준-Python' 카테고리의 다른 글
| 백준 / N번째 큰 수 / 2075번 / Python (0) | 2025.04.11 |
|---|---|
| 백준 / LCS / 9251번 / Python (0) | 2025.04.10 |
| 백준 / 최소 스패닝 트리 / 1197번 / Python (0) | 2025.04.08 |
| 백준 / 친구 네트워크 / 4195번 / Python (0) | 2025.04.07 |
| 백준 / 문자열 폭발 / 9935번 / Python (0) | 2025.04.04 |