728x90
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 |