https://www.acmicpc.net/problem/1253
입력받은 배열을 정렬한 후 투포인터를 사용하여 start는 시작 인덱스, end는 마지막 인덱스로 설정한 뒤, 두 포인터를 조절하며 좋은 수를 탐색하였습니다. 여기서 주의할 점은 어떤 수가 다른 두 수의 합으로 나타낼 수 있어야 한다 는 조건 때문에 자기 자신을 포함해서는 안 된다는 것입니다.
이를 해결하기 위해 자기 자신을 제외한 나머지 수들로 구성된 임시 배열을 만들어 탐색을 진행했습니다.
반례
11
0 1 2 3 4 5 6 7 8 9 10
답: 8
n = int(input())
a = list(map(int, input().split()))
a.sort()
cnt = 0
for i in range(n):
tmp = a[:i] + a[i + 1:]
start = 0
end = len(tmp) - 1
while start < end:
total = tmp[start] + tmp[end]
if total == a[i]:
cnt += 1
break
elif total < a[i]:
start += 1
else:
end -= 1
print(cnt)
문제를 꼼꼼히 읽지 않아 중요한 부분을 놓쳐서 애를 먹었지만 반례를 찾은 후 어떤 부분에서 틀린건지 확실히 알 수 있었다.