728x90
반응형
https://www.acmicpc.net/problem/1253
문제 해결
- 리스트 안의 서로 다른 두 수의 합이 리스트 안의 다른 수가 되는 경우의 수를 구하는 문제이다.
- 리스트 안의 서로 다른 두 수의 합을 비교하는 것이므로 리스트를 올림차순으로 정렬하고 투포인터 이용하는 것이 좋아 보인다.
- 두 수의 합이 리스트 안에 있어도 3 + 0 = 3 등 다른 수가 되지 않으면 그 경우는 경우의 수로 계산하지 않는다.
CODE
import sys
input = sys.stdin.readline
n = int(input())
A = list(map(int, input().split()))
A.sort()
ans = 0
for i in range(n):
start = 0
end = n-1
while start < end:
if A[start] + A[end] == A[i]:
if start != i and end !=i:
ans +=1
break
elif start == i:
start +=1
elif end == i:
end -= 1
elif A[start] + A[end] > A[i]:
end -= 1
else:
start +=1
print(ans)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 11003 최솟값 찾기 (0) | 2023.02.19 |
---|---|
[python] 백준 12891 DNA 비밀번호 (0) | 2023.02.19 |
[python] 백준 2018 수들의 합 5 (0) | 2023.02.18 |
[python] 백준 1940 주몽 (0) | 2023.02.18 |
[python] 백준 14225 부분수열의 합 (0) | 2023.02.10 |
댓글