백준|2467번|용액

README·2023년 3월 20일
0

파이썬 PS풀이

목록 보기
129/136

문제 설명

정렬된 숫자들의 배열을 입력받고 그 중 두 숫자의 합을 구한다고 할 때 합이 0에 가장 가까워지는 조합을 구하는 문제입니다.

작동 순서

  1. 배열을 입력받습니다.
  2. 배열을 가장 앞부분과 가장 뒷부분을 합쳐서 숫자를 구하고 현재 숫자가 0보다 작으면 앞부분 index를 +1(0보다 작으면 숫자가 커져야 하므로), 현재 숫자가 0보다 크면 뒷부분 index를 -1(0보다 크면 숫자가 작아져야 하므로), 그리고 0이 나오면(0보다 0에 가까운 경우는 없으므로) 계산을 종료합니다.
  3. 2번의 과정에서 두 숫자의 합이 지금까지 나온 합들보다 0에 더 가까운 경우 그 값과 조합을 저장합니다.
  4. 계산이 끝나면 저장되어 있는 조합을 출력합니다.

소스코드

import sys
N = int(sys.stdin.readline())
solution = list(map(int, sys.stdin.readline().split()))

first = 0
end = len(solution)-1
minNum = 1e14
s1 = 0
s2 = 0
while first < end:
    num = solution[first]+solution[end]
    if abs(num) < minNum:
        s1 = first
        s2 = end
        minNum = abs(num)
    if num > 0:
        end -= 1
    elif num < 0:
        first += 1
    else:
        break
print(solution[s1], solution[s2])
profile
INTP 개발자 지망생

0개의 댓글