πŸ—οΈ Algorithm/🟩 λ°±μ€€

🟩 [λ°±μ€€] [Python] [Gold5] 2470번_두 μš©μ•‘

Dbswnstjd 2023. 4. 30. 22:12

문제

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

 

2470번: 두 μš©μ•‘

첫째 μ€„μ—λŠ” 전체 μš©μ•‘μ˜ 수 N이 μž…λ ₯λœλ‹€. N은 2 이상 100,000 μ΄ν•˜μ΄λ‹€. λ‘˜μ§Έ μ€„μ—λŠ” μš©μ•‘μ˜ νŠΉμ„±κ°’μ„ λ‚˜νƒ€λ‚΄λŠ” N개의 μ •μˆ˜κ°€ λΉˆμΉΈμ„ 사이에 두고 주어진닀. 이 μˆ˜λ“€μ€ λͺ¨λ‘ -1,000,000,000 이상 1,000,00

www.acmicpc.net

풀이

# λ°±μ€€ 2470번 문제 - 두 μš©μ•‘
n = int(input())
arr = sorted(list(map(int, input().split())))

left = 0
right = n-1

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


while left < right:
    s = arr[left] + arr[right]
  
    if abs(s) < answer:
        answer = abs(s)
        check = [arr[left], arr[right]]
        if answer == 0:
          break
    if s < 0:
        left += 1
    else:
        right -= 1

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

투 포인터 λ¬Έμ œμ΄λ‹€. 이전에 ν’€μ–΄λ΄€λ˜ 투 포인터 λ¬Έμ œμ™€ λΉ„μŠ·ν•΄μ„œ ν’€ 수 μžˆμ—ˆλ‹€. 

주어진 쑰건이 μ •λ ¬λ˜μ–΄ 있고 left 와 right 포인터λ₯Ό 크기에 따라 μ‘°μ ˆν•΄μ€€λ‹€.