알고리즘 문제풀이
좋다 (백준 1253)
wiojfe
2024. 3. 11. 14:46
https://www.acmicpc.net/problem/1253
1253번: 좋다
첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수)
www.acmicpc.net
매번 배열의 숫자를 보고 나머지의 숫자 2개를 더해 만들 수 있는 지 확인하면 된다. 포인터 2개를 써서 처리하면 더 빠르게 가능하다.
n =int(input())
arr =list(map(int, input().split()))
arr.sort()
cnt = 0
def find(arr,target):
s,e =0,len(arr)-1
while s<e :
if arr[s]+arr[e]==target :
return 1
elif arr[s]+arr[e]>target:
e -=1
else :
s+=1
return 0
for i in range(n):
tomake= arr[i]
newarr =arr.copy()
newarr.remove(tomake)
cnt += find(newarr,tomake)
print(cnt)
# -3 -1 0 4 6