난이도 : GOLD IV
문제링크 : https://www.acmicpc.net/problem/1253
문제해결 아이디어
- 투포인터를 활용한문제.
- 숫자리스트를 순회하면서 해당 숫자를 제외한 숫자리스트를 생성하고 생성한 숫자리스트의 첫번째인덱스와 마지막 인덱스부터 시작해서 순회한다.
- 두숫자의 합이 해당 숫자보다 작다면 첫번째 인덱스 => 두번째 인덱스로 변경
- 두숫자의 합이 해당 숫자보다 크다면 마지막 인덱스 => 마지막 -1 인덱스로 변경 하는 방식으로 진행한다.
소스코드
import sys
input = sys.stdin.readline
n = int(input())
numbers = list(map(int, input().split()))
numbers.sort()
cnt = 0
for i in range(n):
tmp = numbers[:i] + numbers[i+1:]
s = 0
e = len(tmp)-1
while s < e:
result = tmp[s] + tmp[e]
if result == numbers[i]:
cnt += 1
break
if result < numbers[i]:
s += 1
else:
e -= 1
print(cnt)