Study | 성장기록/Algorithm

[Baekjoon]2467. 용액

krozv 2024. 4. 17. 03:24

Algorithm

binary search

How to Solve

Constraint

  • 시간: 1초
  • 메모리: 128 MB
  • 2 <= N <=100,000

Method

  1. 완전탐색의 경우
    N * (N-1)번 탐색 = 10,000,000,000 -> 불가능, 시간 초과
  2. 이진탐색의 경우
    O(log N) = 16.6
    (start+end)<0인 경우: start+1
    (start+end)>0인 경우: end-1
import sys
input = sys.stdin.readline

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


start, end = 0, N-1 # 초기값 설정
min_dif = abs(arr[start] + arr[end]) # 합의 최솟값을 저장할 변수 min_dif
a, b = arr[start], arr[end]

while start < end:
    target = arr[start] + arr[end]
    # 합이 최솟값일 경우 min_dif, a, b 갱신
    if abs(min_dif) > abs(target):
        min_dif = abs(target)
        a, b = arr[start], arr[end]
    if target == 0:
        break
    elif target < 0:
        start += 1
    elif target > 0:
        end -= 1
print(a, b)

'Study | 성장기록 > Algorithm' 카테고리의 다른 글

[Baekjoon]17144. 미세먼지 안녕!  (6) 2024.03.21
[Baekjoon]14502. 연구소  (4) 2024.03.14
[Baekjoon]14500. 테트로미노  (4) 2024.03.13
[Baekjoon]14891. 톱니바퀴  (4) 2024.03.12
[Baekjoon]14503. 로봇 청소기  (3) 2024.03.12