STUDY/Algorithm

[백준] 12967 pqr python 못풀었다.

sinawi95 2021. 3. 26. 22:31
728x90

www.acmicpc.net/problem/12967

 

12967번: pqr

N개의 수로 이루어진 배열 A과 정수 K가 주어진다. 0 ≤ p < q < r < N 이면서, A[p] * A[q] * A[r]이 K로 나누어 떨어지는 (p, q, r) 쌍의 개수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

from itertools import combinations
def gcd(y, x):
    if y < x: # 항상 y가 더 크게
        y, x = x, y
    while x != 0:
        t = y % x
        y, x = x, t
    return abs(y)

N, K = map(int, input().split())
n_list = list(map(int, input().split()))
# N의 원소와 K 의 최대공약수
n_gcd = [0] * N
for i in range(N):
    n_gcd[i] = gcd(n_list[i], K)

result = 0
for x, y, z in combinations(n_gcd, 3):
    if gcd(x*y*z, K) == K:
        result += 1
print(result)

못풀었다. 플래티넘은 너무 어렵다. 파이썬으로는 못푸는걸까?

우선 n_list와 K의 최대 공약수를 구해서 그 최대 공약수를 곱했을때의 K가 나뉘면 값을 하나씩 올려고 했다.

예제는 풀었는데 시간초과의 벽은 넘지 못했다.

'STUDY > Algorithm' 카테고리의 다른 글

[백준] 1242 소풍 파이썬  (0) 2021.03.27
[백준] 12904 A와B python  (0) 2021.03.26
[백준] 12871 무한 문자열  (0) 2021.03.26
[백준] 13706 제곱근 python  (1) 2021.03.25
[백준] 12907 동물원  (0) 2021.03.25