[백준 2470] 두 용액

Junyoung Park·2022년 3월 8일
0

코딩테스트

목록 보기
221/631
post-thumbnail

1. 문제 설명

두 용액

2. 문제 분석

이분 탐색을 통해 leftend 인덱스 값을 더했을 때 어느 부분이 0에 가까운지 체크한다. 연산을 하면서 0에 가장 가까운 (즉 절댓값을 사용) 기록이 있다면 인덱스를 기록해둔다.

3. 나의 풀이

import sys

n = int(sys.stdin.readline().rstrip())

liquids = list(map(int, sys.stdin.readline().split()))

liquids.sort()

left = 0
right = n-1

local_left = 0
local_right = n-1
local_total = liquids[left] + liquids[right]
# 현 시점에서의 가장 좋은 기록

while left < right:
    total = liquids[left] + liquids[right]

    if abs(total) < abs(local_total):
        local_total = total
        local_left = left
        local_right = right
        # 기록하고 있는 값보다 0에 가깝다면 바꾼다.

    if total == 0: break
    elif total < 0:
        total - liquids[left]
        left += 1
        # 음수의 영향이 더 크기 때문
    else:
        total - liquids[right]
        right -= 1
        # 양수의 영향이 더 크기 때문

print(liquids[local_left], liquids[local_right])
profile
JUST DO IT

0개의 댓글