728x90
< 기존 풀이 >
각 원소들의 차이를 이용한 계산까지는 생각을 했었다. 하지만 계속 시간 초과가 발생하였고 원인이 마지막 부분 약수 탐색 인 것을 발견하였다. 한번에 원소를 두 개 씩 넣어주면 되는데 난 두 배의 시간을 사용한 것이었다.
< 해결 방법 >
한번에 원소를 두 개 씩 넣어주는 방법을 사용해서 어렵지 않게 문제를 풀 수 있었다.
import sys
import math
a = sys.stdin.readline()
b = [ ]
c = [ ]
for i in range(0,int(a)):
b.append(int(sys.stdin.readline()))
for i in range(0,len(b)-1):
c.append(b[i+1]-b[i])
k = math.gcd(*c)
ans = [ ]
for i in range(1,int(math.sqrt(k))+1):
if k%i==0:
first = i
second = int(k/i)
if first == second:
ans.append(first)
else:
ans.append(first)
ans.append(second)
ans = sorted(ans)
for i in range(1,len(ans)):
print(ans[i],end=" ")728x90
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 18870 좌표 압축 (0) | 2022.08.02 |
|---|---|
| [파이썬] 백준 2004 조합 0의 개수 (0) | 2022.08.02 |
| [파이썬] 백준 15652 N과 M (4) (0) | 2022.08.01 |
| [파이썬] 백준 15651 N과 M (3) (0) | 2022.08.01 |
| [파이썬] 백준 1004 어린 왕자 (0) | 2022.08.01 |