코딩딩딩

(python) 백준 5618 - 공약수 본문

백준

(python) 백준 5618 - 공약수

komizke 2023. 2. 9. 00:00

백준 5618

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

 

5618번: 공약수

첫째 줄에 n이 주어진다. n은 2 또는 3이다. 둘째 줄에는 공약수를 구해야 하는 자연수 n개가 주어진다. 모든 자연수는 108 이하이다.

www.acmicpc.net

 

1. 문제 설명

 

2개 ~ 3개의 수를 입력받아 공약수를 출력하는 문제

 

2. 문제 풀이

 

최대공약수는 입력받은 수들 중에서 가장 작은 수보다 클 수는 없다.

 

#수 입력
numberList = list(map(int, input().split()))
#최솟값
minNumber = min(numberList)

 

그러므로 1부터 가장 작은 수 까지 돌면서 입력받은 수를 모두 나누어 떨어지게 하는 그 수를 출력한다.

 

#1 ~ 최솟값
for i in range(1, minNumber + 1):
    cnt = 0
    for num in numberList:
        #나누어 떨어지는 경우
        if num % i == 0:
            cnt += 1
        #공약수가 아닌 경우
        else:	
            break
    if cnt == n:	#공약수 조건
        print(i)

 

3. 전체 코드

 

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

minNumber = min(numberList)

for i in range(1, minNumber + 1):
    cnt = 0
    for num in numberList:
        if num % i == 0:
            cnt += 1
        else:
            break
    if cnt == n:
        print(i)
Comments