728x90
#2981 검문
import sys
import math
input = sys.stdin.readline
N = int(input())
A = []
for i in range (0,N):
a = int(input())
A.append(a)
A = list(set(A))
B = []
for i in range (0,len(A)-1):
for j in range (i+1,len(A)):
b = A[j] - A[i]
B.append(b)
gcd = B[0]
for i in range (1,len(B)):
gcd = math.gcd(gcd,B[i])
gcd = math.fabs(gcd)
result = []
for i in range (1,int(math.sqrt(gcd))+1):
if gcd % i == 0:
result.append(i)
c = int(gcd // i)
result.append(c)
else:
continue
result = list(set(result))
result.remove(1)
result.sort()
s = " ".join(str(t) for t in result)
print(s)
이전 포스팅과 크게 다른 것이 없었던 문제인데,
이 문제는 gcd의 약수까지 전부 구해달라고 하는것이 하나의 함정.
코딩을 하면서 런타임에러 (ValueError)가 자주 떴는데,
그 이유는 gcd의 값이 음수가 나오면서 for i in range (1,-----) 의 부분에서 math.sqrt(gcd)에서 에러가 떴는데, gcd에 절댓값을 취하게 해줌으로서 해결 가능.
시간은 52ms로 아주 나이스하게.
'코딩' 카테고리의 다른 글
[BOJ] 백준 1612 가지고 노는 1 Python (0) | 2023.10.27 |
---|---|
[BOJ] 백준 3944 나머지계산 Python (0) | 2023.10.27 |
[BOJ] 백준 1684 같은 나머지 Python (0) | 2023.10.27 |
[BOJ] 백준 1016 제곱ㄴㄴ수 Python (0) | 2023.10.27 |
[BOJ] 백준 1463 1로 만들기 Python (0) | 2023.10.27 |