[골드5] 2470번 : 두 용액

Quesuemon·2021년 4월 1일
0

코딩테스트 준비

목록 보기
59/111

🛠 문제

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


👩🏻‍💻 해결 방법

start는 인덱스 0, end는 인덱스 n-1로 설정하고, answer 값을 이분탐색하며 구할 수 있었다
단, 출력값으로 두 용액의 특성값을 출력해야 했으므로 answer 값을 갱신할 때, 두 용액의 인덱스 값도 저장해주는 과정이 필요했다

소스 코드

import sys 
input = sys.stdin.readline

n = int(input())
data = list(map(int, input().split()))
data.sort()

start, end = 0, n-1
answer = data[start] + data[end]
a_start, a_end = start, end

while start < end:
  tmp = data[start] + data[end]

  if abs(tmp) < abs(answer):
    answer = tmp
    a_start, a_end = start, end
    if answer == 0:
      break
  
  if tmp < 0:
    start += 1
  else:
    end -= 1

print(data[a_start], data[a_end])

0개의 댓글