import sys
input = sys.stdin.readline
N = int(input().rstrip())
nums = sorted([*map(int, input().rstrip().split())])
result = 0
for i in range(N):
num = nums[i]
nums_partial = nums[:i] + nums[i + 1:]
left_idx = 0
right_idx = len(nums_partial) - 1
while left_idx < right_idx:
sum_two_num = nums_partial[left_idx] + nums_partial[right_idx]
if sum_two_num == num:
result += 1
break
elif sum_two_num < num:
left_idx += 1
else:
right_idx -= 1
print(result)
수를 오름차순 정렬 후, 모든 수에 대해 다음을 수행한다.
-> 현재 수를 제외한 partial 리스트를 따로 만들고, 그 리스트를 투 포인터 탐색하여 합이 현재 수가 되는 쌍을 찾아낸다.
이분 탐색 유형으로 검색해서 나온 문제였는데, 알고보니 투 포인터 문제였다.
근데 이전에 이런 비슷한 경우가 있었는데 그 때는 다른 방법을 잘 알아내고 풀어냈는데, 이번에는 그러지 못했다. 투 포인터 숙련도가 낮아서 시야가 트이지 않았던건가 싶다.
이걸 통해 유형 파악에 대해 시야가 넓어야하는게 얼마나 중요한건지 알게 됐고, 투 포인터 숙련도가 좀 낮다는 걸 깨달았다.