[프로그래머스 Level2] N개의 최소공배수

CHOI YUN HO·2021년 3월 9일
0

알고리즘 문제풀이

목록 보기
8/63

📃 문제 설명

N개의 최소공배수

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.

제한사항

  • arr은 길이 1이상, 15이하인 배열입니다.
  • arr의 원소는 100 이하인 자연수입니다.

입출력 예

arrresult
[2, 6, 8, 14]168
[1, 2, 3]6

[문제 출처 : 프로그래머스]

👨‍💻 해결 방법

나의 생각의 흐름을 주절주절..

주어진 N개의 수의 최소 공배수를 구하기 위해서는,
주어진 수들의 공통된 배수 중에서 가장 작은 것을 구해야 한다..

한 수를 정해서 그 배수들을 나머지 수로 나누면서 다 나누어 떨어지면 공배수이다.

그 후보들을 가장 적게 하려면 가장 큰 수의 배수를 나머지 수로 나누어가면서 모두 나누어 떨어지는 가장 작은 수가 최소 공배수가 될 것이다.
굿

결론

주어진 수들 중 가장 큰 수에 배수를 구해서
나머지 주어진 수들로 나누었을때 모두 나누어 떨어지면
그 수를 최소 공배수로 하고 반복문을 탈출..
주어진 수 중 하나라도 나누어 떨어지지 않으면 다음 배수로 나누어 보는 것을 계속 반복한다
굿

👨‍💻 소스 코드

def solution(arr):
    n = 1

    arr.sort()
    while True:
        temp = arr[-1] * n
        n += 1

        flag = True
        for a in arr[:-1]:
            if temp % a != 0:
                flag = False
                break

        if flag:
            answer = temp
            break

    return answer
profile
가재같은 사람

0개의 댓글