algorithm/Python
[백준 1940번] 주몽 (Python3, 실버4)
wingbeat
2025. 1. 13. 19:50
반응형
import sys
N = int(sys.stdin.readline())
M = int(sys.stdin.readline())
num = sorted(map(int, sys.stdin.readline().split()))
start, end, answer = 0, N-1, 0
while start < end:
if num[start] + num[end] == M:
answer += 1
start += 1
end -= 1
elif num[start] + num[end] < M:
start += 1
else:
end -= 1
print(answer)
배열 정렬 후, 투 포인터로 합을 구한다.
start, end 두 포인터가 만나면 종료
두 수의 합이 M보다 작으면 작은 수를 늘려야 M에 가까워지고,
두 수의 합이 M보다 크면 큰 수를 줄여야 M에 가까워지는 것을 이용
반응형