문제
풀이
- 배열을 크기순으로 정렬 함.
- 두개의 포인터를 양 끝에 두고 시작하고, 좌측 포인터 < 우측 포인터될 때까지 while문을 실행함.
- 각각의 pointer가 가리킨 값에 따라 3가지 경우로 나뉨.
1) 같을 경우 : 결과에 1을 추가한 후, 좌측 포인터는 +1, 좌측 포인터는 -1 하여 하나씩 옮겨줌.
2) 클 경우 : 우측 포인터 값을 -1 해줌.
3) 작을 경우 : 좌측 포인터 값을 +1 해줌.
코드
def solution() :
n = int(input())
target = int(input())
arr = list(map(int, input().split()))
arr.sort()
res = 0
left = 0
right = n-1
while left < right :
if arr[left] + arr[right] == target :
res += 1
left += 1
right -= 1
elif arr[left] + arr[right] > target :
right -= 1
else :
left += 1
print(res)
solution()