알고리즘

[99클럽 코테 스터디 5일차 TIL] 백준 2470번 두 용액

전자둥이 2025. 1. 17. 22:42
반응형

 

문제 : https://www.acmicpc.net/problem/2470

 

 

백준 2470번 두 용액 문

 

 

풀이

우선 입력 받은 데이터를 정렬을 한 후 가장 왼쪽과 가장 오른쪽에서부터 데이터를 차례대로 선택해가면서 합이 가장 0에 가까운 값일 때의 두 데이터를 선택할 수 있도록 코드를 작성했습니다.

초기값을 어떻게 세팅할까 고민을 했었는데, 처음에는 INF = sys.maxsize  를 사용하려다가 맨 왼쪽과 맨 오른쪽 값을 초기값으로 세팅해도 문제가 없다고 판단하여 그렇게 세팅을 했습니다.

import sys
read = sys.stdin.readline

n = int(read())
arr = list(map(int, read().split(' ')))
arr.sort()

left = 0
right = n-1

answer = abs(arr[left] + arr[right])
final = [arr[left], arr[right]]


while left < right:
    left_val = arr[left]
    right_val = arr[right]

    sum_data = left_val + right_val
  
    if abs(sum_data) < answer:
        answer = abs(sum_data)
        final = [left_val, right_val]
        if answer == 0:
          break
    if sum_data < 0:
        left += 1
    else:
        right -= 1

print(final[0], final[1])

 

 

반응형