- 정렬을 시켜준 다음 투 포인터로 접근해서 문제를 해결할 수 있었다.
- 이 때, 1 ≤ i < j ≤ n을 만족시키는데 i, j의 등호 관계에
=
가 붙어 있지 않다는 점을 주의하자.
n = int(input())
li = list(map(int, input().split()))
li.sort()
x = int(input())
i = 0
j = len(li)-1
cnt = 0
while True:
if i >= j:
break
else:
if li[i] + li[j] == x:
i += 1
cnt += 1
elif li[i] + li[j] > x:
j -= 1
else:
i += 1
print(cnt)
투 포인터 방식은 문제를 보고 어떻게 포인터를 설정해야할지 고민한 후에 인덱스에러를 범하지 않고 정확하게 접근할 수 있는 방법을 택해야 한다.
①. 두 개의 포인터를 시작점에 같이 두는 방법
②. 두 개의 포인터를 양 끝점에 두는 방법