본문 바로가기

Algorithm & Data Structure

백준 - 2981번

728x90
반응형
import sys

n = int(sys.stdin.readline())
arr = []
for i in range(n):
    arr.append(int(sys.stdin.readline()))

arr.sort()
ans = []
for i in range(2,arr[0]+1):
    cnt = 1
    for j in range(1,len(arr)):
        if arr[0] % i == arr[j] % i:
            cnt = cnt + 1
    if cnt == len(arr):
        ans.append(i)

print(ans)

시간 초과가 났다. 2중 반복문이 시간을 많이 잡아 먹는것 같다.

 

import sys
import math

def get_GCD(nums):
    _gcd = nums[0]
    for n in nums[1:]:
        _gcd = math.gcd(_gcd, n)
    return _gcd

n = int(sys.stdin.readline())
arr = []
for i in range(n):
    arr.append(int(sys.stdin.readline()))


z = max(arr)

k = []
cnt = 0
for i in range(2,z+2):
    if (z % i) not in k:
        k.append(z % i)

temp = []
ans = []
for i in k:
    for j in arr:
        if j-i < 0:
            break
        else:
            temp.append(j-i)

    if len(temp) > 0:
        _gcd = get_GCD(temp)
        if _gcd != 1 and _gcd not in ans:
            ans.append(_gcd)
        temp = []


for m in ans:
    print(m, end=' ')

이 친구도 시간초과

728x90
반응형

'Algorithm & Data Structure' 카테고리의 다른 글

백준 - 15954번(정수론, 전체탐색)  (0) 2022.01.28
백준 - 9375번  (0) 2022.01.27
백준 - 13305(그리디 알고리즘)  (0) 2022.01.25
백준 - 1931번  (0) 2022.01.24
백준 - 11047(그리디 알고리즘)  (0) 2022.01.24