티스토리 뷰
반응형
생각
0에 가까운 두 수의 합을 구해 각 수를 구하는 문제
주어진 리스트를 오름차순으로 정렬한 다음 양 끝에서 투포인터로 계산한다.
0에 가까운 값을 찾는 것이므로 두 수의 합을 절대값으로 변환하여 최소값을 찾는다.
코드
import sys
N = int(input())
min_val = sys.maxsize
lst = list(map(int, input().split()))
lst.sort()
start = 0
end = len(lst) - 1
al = 0
san = 0
while start < end:
part_sum = lst[start] + lst[end]
if abs(part_sum) < min_val:
al = lst[start]
san = lst[end]
min_val = abs(part_sum)
if part_sum > 0:
end -= 1
elif part_sum == 0:
al = lst[start]
san = lst[end]
break
else: # 0보다 작을 때
start += 1
ans = sorted([al, san])
print(ans[0], ans[1])
반응형
'문제풀이' 카테고리의 다른 글
백준 1806 부분합 G4 (0) | 2021.09.26 |
---|---|
프로그래머스 행렬테두리 (구현) lv2 (0) | 2021.09.24 |
프로그래머스 베스트앨범 (hash) lv3 (0) | 2021.09.15 |
프로그래머스 다음 큰 숫자 (구현) lv2 (0) | 2021.09.15 |
프로그래머스 위클리챌린지 5주차_모음사전 (dfs) (0) | 2021.09.15 |
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
농담곰의 고군분투 개발기