practivceAlgorithm/백준

[백준][Python] 3273 두 수의 합

findTheValue 2021. 10. 4. 05:15

동일한 수가 나오는 경우를 대비했는데 1등코드보니 같은수는 안나오는 것 같다.

일단 counting한 후 set에 저장한 것에서 checking하며 각 조합의 수를 answer 에 더해줬다.

 

import sys
input = sys.stdin.readline
from collections import defaultdict
from itertools import combinations

n = int(input())
arr = list(map(int, input().split()))
x = int(input())
check = defaultdict(int)
nums = set()
for num in arr:
    check[num] += 1
    nums.add(num)
answer = 0
for num in nums:
    if (x - num) in check:
        if 2 * num == x:
            answer += len(list(combinations([i for i in range(check[num])], 2)))
            continue
        answer += check[num] * check[x - num]
        del check[num]
        del check[x - num]
print(answer)