프로그래밍/백준

[알고리즘] 백준 2824 파이썬 - 최대공약수

매 석 2022. 12. 3. 15:50
반응형

 

 

2824번: 최대공약수

첫째 줄에 N(1 ≤ N ≤ 1000)이 주어진다. 둘째 줄에는 N개의 양의 정수가 공백으로 구분되어 주어진다. 이 수는 모두 1,000,000,000보다 작고, N개의 수를 곱하면 A가 된다. 셋째 줄에 M(1 ≤ M ≤ 1000)이

www.acmicpc.net

 

문제

상근이는 학생들에게 두 양의 정수 A와 B의 최대공약수를 계산하는 문제를 내주었다. 그런데, 상근이는 학생들을 골탕먹이기 위해 매우 큰 A와 B를 주었다.

상근이는 N개의 수와 M개의 수를 주었고, N개의 수를 모두 곱하면 A, M개의 수를 모두 곱하면 B가 된다.

이 수가 주어졌을 때, 최대공약수를 구하는 프로그램을 작성하시오.

 

 

문제풀이

import sys
input =sys.stdin.readline
#유클리드 호제법
def gcd(a,b):
    while b>0:
        a,b=b,a%b
    return str(a)[-9:]
#01
n=int(input().rstrip())
a=1
for i in list(map(int,input().split())):
    a*=i
#02
m=int(input().rstrip())
b=1
for j in list(map(int,input().split())):
    b*=j
#03
print(gcd(a,b))

- 유클리드 호제법을 사용하였다. (아래 링크를 참조)

 

 

[알고리즘] 백준 17087 파이썬 - 숨바꼭질6 (유클리드 호제법)

17087번: 숨바꼭질 6 수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초

maeseok.tistory.com

- #01 : n 길이만큼 입력받아 a에 모두 곱해준다.

- #02 : m 길이만큼 입력받아 b에 모두 곱해준다.

- #03 : 앞에서 구한 a,b를 통해 최대공약수를 구해준다.

           (최대공약수를 구하고 그 값을 마지막 9자리만 반환한다.

            여기서 int형은 인덱싱이 되지 않으므로, str 형태로 바꿔줘야 한다.)

            출력할 때 구한 값을 int형으로 변환하면 문제에서 틀렸다고 하니,

            str형태 그대로 출력해줘야 한다. 괜히 8분이나 시간 낭비했다.