관리 메뉴

솜씨좋은장씨

[BaekJoon] 5618번 : 공약수 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 5618번 : 공약수 (Python)

솜씨좋은장씨 2023. 1. 14. 23:01
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 공약수 입니다.

 

5618번: 공약수

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

www.acmicpc.net

👨🏻‍💻 코드 ( Solution )

def GCD(a, b):
    mod = a%b
    while mod > 0:
        a = b
        b = mod
        mod = a%b
    return b


def find_a_factor(N):
    factor_list = []
    cnt = 0
    
    for num in range(1, (N // 2) + 1):
        if N % num == 0:
            factor_list.append(num)
            
    factor_list.append(N)
    return sorted(factor_list)


def get_two_number(number_list):
    num1, num2 = number_list[0], number_list[1]
    
    if len(number_list) == 3:
        num1 = GCD(a=number_list[0], b=number_list[1])
        num2 = GCD(a=number_list[1], b=number_list[2])
        
    return [num1, num2]


def n_gcd(number_list):
    number_list = get_two_number(number_list=number_list)
    gcd = GCD(a=number_list[0], b=number_list[1])
    
    return find_a_factor(N=gcd)


def print_answer(answer):
    for ans in answer:
        print(ans)


if __name__ == "__main__":
    n = int(input())
    number_list = list(map(int, input().split()))
    
    answer = n_gcd(number_list=number_list)
    
    print_answer(answer=answer)
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments