문제 링크 : www.acmicpc.net/problem/2470
2470번: 두 용액
첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00
www.acmicpc.net
파이썬으로 백준 첫 골드문제
간단한 투포인터 문제다
생각을 잘못해서 분기가 2배로 늘었다. 다른 사람 풀이를 보고 굳이 분기 안해도 되는 부분을 알았다.
내코드
import sys
if __name__ == '__main__':
N = map(int,input().rstrip())
arr = list(map(int,input().rstrip().split()))
arr.sort()
left = 0; right = len(arr)-1;
# 1. arr[left]와 arr[right]가 모두 0보다 크거나 같을 때 => right--
# 2. arr[left]와 arr[right]가 모두 0보다 작을 때 => left++
# 3. arr[left]와 arr[right]의 부호가 다를 때 => 1) 절대값이 큰 쪽이 moving
ans = sys.maxsize
A = sys.maxsize
B = sys.maxsize
while(left < right):
if (abs(arr[left] + arr[right]) < ans):
ans = abs(arr[left]+arr[right])
A = arr[left]
B = arr[right]
if arr[left] >= 0 and arr[right] >= 0:
right-=1
elif arr[left] <0 and arr[right] <0:
left+=1
else:
if abs(arr[left]) > abs(arr[right]):
left+=1
else:
right-=1
print(A,B)
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2042 구간 합 구하기 (2) | 2020.12.02 |
---|---|
[백준] 1072 게임 (0) | 2020.12.01 |
[백준] 1806 부분합 (0) | 2020.11.24 |
[백준] 1920 수 찾기 (0) | 2020.11.24 |
[백준] 18228 펭귄추락 (0) | 2020.11.11 |