IT 세계의 후아

[python]두 리스트 공통 인자 추출(최대공약수/최소공배수) 본문

Coding/Python

[python]두 리스트 공통 인자 추출(최대공약수/최소공배수)

후__아 2024. 6. 15. 00:10

※ List Comprehension

리스트 a, b

[x for x in a if x in b]  # a의 인자 중 b에도 있는 인자만 추출

 

#프로그래머스 lv1 최대공약수, 최소공배수
#n, m 두 숫자를 받으면 [gcd, lcm] return
def divide(num): # num의 약수 리스트 return
    div_li = []
    for i in range(1, int(num**(1/2))+1):
        if num%i == 0:
            div_li.append(i)
            if i != num//i:
                div_li.append(num//i)
    return div_li

def solution(n, m):
    answer = []
    if max(m, n)%min(m,n) == 0: # 서로 약수, 배수인 경우
        answer.extend([min(m, n), max(m,n)])
    else:
        gcd = max([x for x in divide(n) if x in divide(m)])
        lcm = gcd * (n//gcd) * (m//gcd)
        answer.extend([gcd, lcm])
    return answer
    
    
# 다른 사람 풀이1
def solution(n, m):
	c,d = max(a, b), min(a, b)
    t = 1
    while t>0:
        t = c%d
        c, d = d, t
    answer = [ c, int (a*b/c)]
    return answer
    
# 다른 사람 풀이2
def solution(n, m):
    gcd = lambda a,b : b if not a%b else gcd(b, a%b)
    lcm = lambda a,b : a*b//gcd(a,b)
    return [gcd(n, m), lcm(n, m)]

 

※ intersection()

list(set(a).intersection(b))

'Coding > Python' 카테고리의 다른 글

[python]진수 변환  (0) 2024.06.16
[python]2차원 리스트 생성 및 접근, 값 추가  (0) 2024.06.13
[python]isdigit()  (0) 2024.06.13
[python]딕셔너리(value로 key값 추출)  (0) 2024.04.24
[python]소수점 자리수 round  (0) 2024.04.24