Algorithm
binary search
How to Solve
Constraint
- 시간: 1초
- 메모리: 128 MB
- 2 <= N <=100,000
Method
- 완전탐색의 경우
N * (N-1)번 탐색 = 10,000,000,000 -> 불가능, 시간 초과 - 이진탐색의 경우
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 |