https://www.acmicpc.net/problem/2470
문제핵심
1. 음수 양수 상관없이 가까운 값을 찾는 것이기 때문에 절댓값을 이용해야겠다는 아이디어
2. 정렬 후 왼쪽 끝과 오른쪽 끝을 정해두고 while left < right: 조건 내 순환하며 답을 찾을 수 있도록 한다 (투포인터 알고리즘)
팁
1. 2e+9는 2 x 10^9를 나타낸다
2. answer = [1, 2]와 같이 list로 되어있는 경우 *answer처럼 앞에 *(Asterisk)를 붙이면 괄호 안 내용은 1, 2로 출력된다.
풀이
n = int(input())
water = list(map(int, input().split()))
water.sort()
left = 0
right = n - 1
min_sum = 2e+9+1
answer = [0, 0]
while left < right:
curr_sum = water[left] + water[right]
if abs(curr_sum) < min_sum:
min_sum = abs(curr_sum)
answer[0] = water[left]
answer[1] = water[right]
if curr_sum < 0:
left += 1
else:
right -= 1
print(*sorted(answer))
728x90
'파이썬알고리즘' 카테고리의 다른 글
백준 2108 통계학 (파이썬) (0) | 2024.09.23 |
---|---|
프로그래머스 귤 고르기 (파이썬) (0) | 2024.09.04 |
백준 1931 회의실 배정 (파이썬) (0) | 2024.08.27 |
백준 20920 영단어 암기는 어려워 파이썬 (0) | 2024.08.26 |
백준 23971 ZOAC 4 파이썬 (0) | 2024.08.26 |