본문 바로가기

알고리즘풀이/프로그래머스

[Lv2.] N개의 최소공배수

👉 사용 언어 : 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