본문 바로가기

코딩테스트/programmers

N개의 최소공배수

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

소인수분해를 이용해서 문제를 풀었는데 시간 초과가 되었다..

 

나무 위키에서 최소 공배수에 관한 내용을 읽다보니

 

https://namu.wiki/w/%EC%B5%9C%EC%86%8C%EA%B3%B5%EB%B0%B0%EC%88%98

 

최소공배수 - 나무위키

예시로 두 수 10, 12의 공배수를 찾고 싶다고 하자. 먼저 두 수의 배수를 쭉 나열한다. 10: 10, 20, 30, 40, 50, 60, 70, ... 12: 12, 24, 36, 48, 60, 72, ... 여기서 위아랫줄 동시에 나타나는 수가 바로 공배수이다.

namu.wiki

 

최대공약수(gcd)를 이용하는 방법도 있더라..

 

import java.util.*;

class Solution {
    public int solution(int[] arr) {
        
        int answer = arr[0];
        if (arr.length == 1) return answer;
        
        for (int i = 1; i < arr.length; i++) {
            answer = lcm(answer, arr[i]);
        }
        
        return answer;
        
    }
    
    int lcm(int a, int b) {
        return a * b / gcd(a, b);
    }
    
    int gcd(int a, int b) {
        int gt = a > b ? a : b;
        int lt = a > b ? b : a;

        int rest = gt % lt;

        if (rest == 0) {
            return lt;
        }

        return gcd(lt, rest);
    }
}

 

사실상 수학 문제인가..?

'코딩테스트 > programmers' 카테고리의 다른 글

귤 고르기  (0) 2023.09.25
멀리 뛰기  (0) 2023.09.25
예상 대진표  (0) 2023.09.21
점프와 순간 이동  (0) 2023.09.21
구명보트  (0) 2023.09.21