[백준 – 3273][Python]


안녕하세요. 톤입니다.

이 게시물 파이썬 3 버전별로 해결되었습니다.

문제 소스

https://www.acmicpc.net/problem/3273

3273호: 두 수의 합

n개의 서로 다른 양의 정수 a1, a2, …, an의 시퀀스가 ​​있습니다. ai의 값은 1보다 크거나 같고 1000000보다 작거나 같은 자연수입니다. 주어진 자연수 x에서 ai + aj = x(1 ≤ i < j ≤ n)

www.acmicpc.net


문제

n개의 서로 다른 양의 정수 a1, a2, …, an의 시퀀스가 ​​있습니다. ai의 값은 1보다 크거나 같고 1000000보다 작거나 같은 자연수입니다. 자연수 x가 주어졌을 때 ai + aj = x ( 1 ≤ i < j ≤ n).

기입

첫 번째 줄은 시퀀스의 크기 n을 제공합니다. 다음 줄은 시퀀스에 포함된 번호를 제공합니다. x는 세 번째 줄에 지정됩니다. (1≤n≤100000, 1≤x≤2000000)

누르다

문제의 조건을 만족하는 쌍의 수를 반환합니다.

암호

n = int(input())
sequence = list(map(int, input().split()))
x = int(input())

count = {}

for items in sequence:
    count(items) = count.get(items, 0) + 1

pair_count = 0


for num in sequence:
    complement = x - num

    if complement in count:
        pair_count += count(complement)

pair_count //= 2

print(pair_count)

설명


부정확하거나 질문이 있는 경우 의견에 지식을 자유롭게 공유하십시오.

더 좋은 글을 쓰도록 노력하겠습니다.

다음 포스트에서 만나요.