👉 사용 언어 : PYTHON3
N개의 최소공배수
✅ Solution
import math
def lcm(a, b):
return a * b // math.gcd(a, b)
def solution(arr):
temp = [lcm(arr[0], arr[1])]
for i in range(2, len(arr)):
temp.append(lcm(temp[-1], arr[i]))
return temp[-1]
👉 문제 설명 및 제한 사항
- n개의 수의 최소공배수 : n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자
- 매개변수 : n개의 숫자 를 담은 배열 arr
- 1 <= 길이 <= 15
- 원소 <= 100 자연수
- 리턴값 : 이 수들의 최소공배수
👉 아이디어
- lcm 함수 를 따로 정의한다.
- 두 수의 곱을 두 수의 최대공약수로 나눈 몫
- arr 배열의 맨 처음 두 수 의 최소공배수를 구하여 temp 배열 에 추가한다.
- 그 다음 원소(= 수)부터 맨 마지막 원소까지 for문 을 돌려 최소공배수를 구해 temp 배열에 차례대로 추가 한다.
- 작은 수부터 2개씩 최소공배수를 구해나가는 방법 선택❗️
- 아이패드로 그림설명 그려서 올리기❗️❗️❗️❗️
- temp 배열의 맨 마지막 원소 가 arr 배열의 모든 원소의 최소공배수 이므로 이 값을 리턴한다.
👉 깨달은 것 / 알게된 것
- math 라이브러리의 gcd(최대공약수)와 lcm(최소공배수)를 구하는 내장 함수를 사용할 수 있다.
- math.lcm : 파이썬 3.9버전부터 사용 가능하다.
- 두 수중 max값을 구해 max값 부터 두 수의 곱 까지 반복문을 돌려 둘 다 나누어떨어지는 수를 구하는 방법으로도 최소공배수를 찾을 수 있다.
'알고리즘풀이 > 프로그래머스' 카테고리의 다른 글
| [Lv1.] 완전탐색 - 모의고사 (0) | 2024.03.11 |
|---|---|
| [Lv2.] 완전탐색 - 소수 찾기 (0) | 2024.03.08 |
| [Lv2.] 모음사전 (0) | 2024.03.01 |
| [Lv2.] 프로세스 (0) | 2024.03.01 |
| [Lv2.] 영어 끝말잇기 (0) | 2024.03.01 |