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

처음 풀이
def solution(arr):
n = []
for _ in range(len(arr)-1):
for i in range(1,len(arr)):
a,b = arr[i-1],arr[i]
aa,bb = a,b
while True:
aa,bb = bb,aa%bb
if bb == 0 :
n.append((a*b)//aa)
break
arr = n
n = []
return arr[0]
좀더 깔끔하게 고친거
def solution(arr):
n = []
for i in range(len(arr)-1):
a = arr[0]
b = arr[i+1]
while True:
a,b = b,a%b
if b == 0 :
arr[0] = arr[0]*arr[i+1]//a
break
return arr[0]
for문을 2번이나 돌릴필요없이 리스트를 딱 한번만 순회해도 답이 나온다
[2,6,8,14]이면, 2와6의 최소공배수를 구하면 6이 나오고
6과 8의 최소공배수를 구하면 24,
24와 14의 최소공배수를 구하면 168이 나온다.
즉 168이 n개의 수의 최소공배수이다.
정석적인 풀이인지는 모르겟다.
| [파이썬/python] 백준 15439번 : 베라의 패션(🥉4) (0) | 2023.05.25 |
|---|---|
| [파이썬/python] 백준 13909번 : 창문 닫기(🥈5) (0) | 2023.04.18 |
| [파이썬/python] 프로그래머스 : 체육복 (Lv.1) (0) | 2023.04.07 |
| [파이썬/python] 프로그래머스 : 완주하지 못한 선수 (Lv.1) (0) | 2023.04.06 |
| [파이썬/python] 백준 7785번 : 회사에 있는 사람(🥈5) (0) | 2023.04.03 |