본문 바로가기
Programmers/Python

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

by Sin_ 2021. 12. 6.
728x90

안녕하세요 뚜디 입니다

코딩테스트 연습 - N개의 최소공배수 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - N개의 최소공배수

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배

programmers.co.kr

< 프로그래머스 - N개의 최소공배수 (LV2) >


1. 연습 문제

2. 문제 풀이

3. 소스 코드

4. 결과


1. 연습 문제

※ 문제 설명

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

※ 제한 조건

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

※ 입출력 예

arr result
[2,6,8,14] 168
[1,2,3] 6

 

2. 문제 풀이
임의의 리스트에 입력된 임의의 숫자들의 최소공배수를 찾는 문제입니다.
1. 임의의 리스트에서 가장 큰 숫자를 찾는다->리스트 마지막 인자값
2. 가장 큰 숫자와 임의의 리스트에 인자값들이 나누어 떨어지는지 확인한다.
   : 모든 인자값들이 나누어 떨어진다면 최소공배수
3. 나누어 떨어지지 않는경우 가장 큰 숫자+1 을하여 2번동작을 무한반복한다.

 

3. 소스 코드
def solution(arr):
    answer = 0
    count = 0
    temp = arr[-1]

    while count != len(arr):
        for j in range(len(arr)):
            if (temp % arr[j] == 0):
                count += 1
            else:
                count = 0
                temp += 1
                break 
        

    answer = temp
    return answer
임의의 리스트에서 가장 큰 값을 가장 마지막 인자값이라고 단정지었는데, 문제에서 그 어떤 언급도 없었다
arr[-1]보단 MAX(arr)이 더 맞는 접근이였을거 같다.

 

4. 결과

728x90