3273 - 두 수의 합
📌 문제
n개의 서로 다른 양의 정수 a1, a2, …, an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 (ai, aj)쌍의 수를 구하는 프로그램을 작성하시오.
📋 코드
N = int(input())
arr = list(map(int, input().split()))
x = int(input())
arr.sort()
left, right = 0, N-1
result = 0
while left < right:
if arr[left] + arr[right] > x:
right -= 1
elif arr[left] + arr[right] < x:
left += 1
else:
left += 1
right -= 1
result += 1
print(result)
💡 한마디
left 와 right 를 설정해두고, 두 수의 합이 자연수 X 가 되는지 확인해줬다.