[백준/파이썬] 5618번

민정·2023년 1월 25일
0

[백준/파이썬]

목록 보기
49/245
post-thumbnail

백준 5618번

문제

https://www.acmicpc.net/problem/5618

코드

#시간초과 풀이
n = int(input())
num = list(map(int, input().split()))

for i in range(1,min(num)+1):
    cnt = 0
    for j in num:
        if j % i == 0:
            cnt += 1
    if cnt == n:
        print(i)
#맞는 풀이
import math

n = int(input())
num = list(map(int, input().split()))

min_num = math.gcd(num[0], math.gcd(num[1], num[-1]))

for i in range(1,min_num//2 +1):
   if min_num % i == 0:
       print(i)

print(min_num)

풀이

처음엔 시간초과가 떠서 방법을 바꿨다.
gcd를 이용해서 최대공약수를 구한 후, 최대공약수의 약수를 출력하도록 했다.
루프의 범위를 min_num//2+1로 한 이유는 min_num이면 시간초과가 뜬다. 그러므로 나누기 2를 했다.

profile
パㅔバ6ㅇr 덤벼ㄹΓ :-0

0개의 댓글