👩‍💻 코테 공부/코테 공부

[코테 - py] 숫자 카드 나누기

수댕ʕت̫͡ʔ 2024. 7. 24. 23:02

 

import math

g = math.gcd(10, 20) # 10

https://school.programmers.co.kr/learn/courses/30/lessons/135807

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

이 문제는 결국 해설을 보았다. 시간초과문제를 해결하지 못해서 풀이를 확인했다.

최대공약수를 이용해서 푸는 문제!

gcd를 import해서 사용한다.

 

from math import gcd
def get_gcd(arr):
    g = arr[0]
    # 배열을 돌면서 gcd를 구함 
    for i in range(1,len(arr)):
        g = gcd(arr[i],g)
    return g

def solution(arrayA, arrayB):
    answer = 0   
    a_gcd = get_gcd(arrayA)
    b_gcd = get_gcd(arrayB)
    
    for a in arrayA:
        if a % b_gcd == 0:
            break
    else:
        answer = max(b_gcd,answer)
        
    for b in arrayB:
        if b % a_gcd == 0:
            break
    else:
        answer = max(a_gcd,answer)
                    
    return answer

 

- 여기서 gcd와 lcm 라이브러리를 사용하는 방법을 알아보자.

 

1) gcd : 최대공약수

import math

g = math.gcd(10, 20) # 10

 

2) lcm : 최소공배수

from math import gcd

def lcm(x, y):
   return x * y // gcd(x,y)

print(lcm(2, 4)) # 4

 

 

math 모듈에 대해 알 수 있는 시간이었다.