투 포인터
를 이용하여 문제를 해결할 수 있습니다.기준값(x)
과 비교합니다.-1
, 작을 경우 왼쪽 끝 포인터가 +1
이 되면서 두 포인터가 만날 때까지 반복을 진행합니다.import sys
input = sys.stdin.readline
n = int(input())
num = list(map(int, input().split()))
x = int(input()) # 기준값
num.sort()
start, end = 0, n - 1 # 왼쪽 끝 포인터, 오른쪽 끝 포인터
cnt = 0
while start < end:
hap = num[start] + num[end]
if hap == x: # 기준값과 같으면 문제 조건을 만족하는 쌍 +1, 오른쪽 끝 포인터 -1
cnt += 1
end -= 1
elif hap > x: # 기준값보다 합이 클 경우 오른쪽 끝 포인터 -1
end -= 1
else:
start += 1 # 기준값보다 합이 작을 경우 왼쪽 끝 포인터 +1
print(cnt)