[BOJ] 백준 2467 용액

태환·2024년 2월 2일
0

Coding Test

목록 보기
40/151

📌 [BOJ] 백준 2467 용액

📖 문제

📖 예제

📖 풀이

N = int(input())
liquid = list(map(int, input().split()))

start = 0
end = (N-1)
ans = abs(liquid[start]+liquid[end])

while start < end:
  tmp = liquid[start] + liquid[end]
  if abs(tmp) <= ans:
    left_index = start
    right_index = end
    ans = abs(tmp)
  if tmp <= 0:
    start += 1
  else:
    end -= 1
    
print(liquid[left_index], liquid[right_index])

투 포인터를 알게 된 문제이다.
두 용액의 합이 양수일 경우 오른쪽 index를 왼쪽으로 한 칸 내린다.
반면, 음수일 경우 왼쪽 index를 오른쪽으로 한 칸 올린다.
이 과정을 반복하면서 두 용액 합의 절대값이 기존 최소 절대값보다 작다면, 해당하는 두 용액의 인덱스를 따로 저장한 뒤 출력한다.

profile
연세대학교 컴퓨터과학과 석사 과정

0개의 댓글