🐸 문제 정보
🤖 알고리즘
이진탐색
⏱️ 풀이 시간
19.00m
📝 풀이
- 용액의 점수는 오름차순으로 입력된다.
- 때문에 start는 0, end는 n-1 인덱스로 잡고 시작한다.
- 두 점수의 합이 최소값이 되는 순간까지 이진탐색을 실행한다.
- 만약 두 점수의 합이 0이라면, 이보다 작을 수는 없기 때문에 거기서 멈춘다.
이분탐색은 계속 풀어도 뭔가 붕뜨게 이해되는 느낌이다... 더 더 많이 풀어봐야 할 것 같다.
🧑💻 나의 답
# pypy3
import sys
input = sys.stdin.readline
n = int(input().rstrip())
scores = list(map(int, input().rstrip().split()))
gap = sys.maxsize
res = (0, 0)
start = 0
end = n - 1
while start < end:
cur = scores[start] + scores[end]
if abs(cur) < gap:
gap = abs(cur)
res = (scores[start], scores[end])
if cur == 0:
break
elif cur > 0:
end -= 1
elif cur < 0:
start += 1
print(*res)
'PS > 문제풀이' 카테고리의 다른 글
백준 17484 진우의 달 여행 (Small) Python (0) | 2024.01.21 |
---|---|
백준 25757 임스와 함께하는 미니게임 Python (0) | 2024.01.21 |
백준 12919 A와 B 2 Python (0) | 2024.01.20 |
백준 1927 최소 힙 Python (0) | 2024.01.20 |
백준 19637 IF문 좀 대신 써줘 (0) | 2024.01.20 |