IT 세계의 후아
[python]두 리스트 공통 인자 추출(최대공약수/최소공배수) 본문
※ 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 |