기록공간

N개의 최소공배수 (프로그래머스) - Java 본문

Algorithm/문제

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

입코딩 2020. 8. 25. 08:54
반응형

해결 방법

각 번호의 배수가 되는 최소의 값을 찾는 문제이다. 

 

N개의 최소 공배수를 구하기 위해서는 N중 가장 큰 값의 배수에 맞추어 나머지 배수들을 검사하는 방법을 생각해볼 수 있다. 풀이 과정은 다음과 같다. 

 

[2, 6, 8, 14]

가장 큰 값은 14이다. 

-> 14 * 1 = 14
2, 14는 배수이지만 나머지 6, 8이 배수가 아님 => X

-> 14 * 2 = 28
2, 14는 배수이지만 나머지 6, 8이 배수가 아님 => X

-> 14 * 3 = 32
2, 8, 14는 배수이지만 나머지 6이 배수가 아님 => X

...

-> 14 * 12 = 168
 2, 6, 8, 14 모두의 배수 => O

가장 최초로 나오는 모든 배수를 만족하는 값이 최소 공배수가 된다.

 

구현 코드는 다음과 같다.

class Solution {
    public int solution(int[] arr) {
        int answer = 0;
        int count = 1;
        while(true) {
            int checkNum = arr[arr.length - 1] * count++;
            int checkCount = 0;
            for(int i = 0; i < arr.length - 1; ++i) {
                if(checkNum % arr[i] == 0) ++checkCount;   
            }
            
            if(checkCount == arr.length - 1) {
                answer = checkNum;
                break;
            }
        }     
        return answer;
    }
}

 

반응형
Comments