N, M = int(input()), int(input())
arr = list(map(int, input().split()))
arr.sort()
i, j = 0, N-1
count = 0
while i < j:
if arr[i]+arr[j] < M: i+=1
elif arr[i]+arr[j] > M: j-=1
else: # 두 수의 합이 M이면
count+=1
i+=1
j-=1
print(count)
투 포인터 i와 j, i<j 동안 반복
i: 앞부터, j: 뒤부터 검사
두 수의 합이 M이면 count++
M보다 작으면 i++
M보다 크면 j--
N, M = int(input()), int(input())
arr = list(map(int, input().split()))
occur = [0]*M
count = 0
for n in arr:
if M-n>0 and occur[M-n]: count+=1
if n<M: occur[n]=1
print(count)
N은 자연수이며 서로 다른 수
nums: 0~M 인덱스를 가진 리스트로 arr에 존재하는 숫자를 표시, 즉, 1~M까지 숫자만 저장
Indexerror 방지를 위해 인덱스가 범위 안에 있는 확인 필요
아래: 정답
위: 정답2