๐Ÿ—๏ธ 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 ํฌ์ธํ„ฐ๋ฅผ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์กฐ์ ˆํ•ด์ค€๋‹ค.