나의 풀이
import math
def gcd(a, b):
"""
이 함수는 주어진 두 숫자 a, b의 최대공약수(GCD)를 계산합니다.
"""
for i in range(min(a, b), 0, -1):
if a % i == 0 and b % i == 0:
return i
def lcm(a, b):
"""
이 함수는 주어진 두 숫자 a, b의 최소공배수(LCM)를 계산합니다.
"""
return int( a * b /gcd(a, b))
def solution(arr):
"""
이 함수는 주어진 리스트 arr의 모든 요소들의 LCM을 계산합니다.
"""
stack = []
# 리스트의 각 요소를 순회합니다.
for element in arr:
# 스택이 비어 있으면 요소를 스택에 추가합니다.
if not stack:
stack.append(element)
# 그렇지 않으면 스택의 최상위 요소와 현재 요소의 LCM을 계산하고, 결과를 스택에 추가합니다.
else:
stack.append(lcm(stack.pop(), element))
# 리스트의 모든 요소들의 LCM을 계산한 결과가 저장된 스택의 마지막 요소를 반환합니다.
return stack[-1]
▶if not stack →엄청 자주 쓰임
'프로그래머스(파이썬) > LV.2(파이썬)' 카테고리의 다른 글
예상 대진표 ★★ (0) | 2022.12.25 |
---|---|
점프와 순간 이동→재귀함수(DFS)★★ + 동적 계획법 (0) | 2022.12.25 |
구명보트→ 침몰하는 타이타닉(그리디)★★ (0) | 2022.12.24 |
끝말잇기→인덱스 순환 +stack사용해서 중복체크, index+1은 사람번호, 인덱스 별도 저장★★+ turn//n+1 (0) | 2022.12.24 |
짝지어 제거하기→크레인 인형 뽑기와 유사★★ (0) | 2022.12.24 |