[프로그래머스] 최대공약수와 최소공배수

2020. 6. 20. 15:46프로그래머스/LEVEL 1

import java.util.*;

class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[2];
        int flag=1;
     
        if(n>m){
           if(n%m==0){
               answer[0] = m;
               answer[1] = n;
           } else{
               for(int i=1; i<m; i++){
                   if(n%i==0 && m%i==0){
                       answer[0] = i;
                       answer[1] = n*m/i;
                   }
               }
           }
            
            
        } else{
            if(m%n==0){
                answer[0] = n;
                answer[1] = m;
            }else{
                for(int i=1; i<n; i++){
                    if(n%i==0 && m%i==0){
                        answer[0] = i;
                        answer[1] = n*m/i;
                    }
                }
            }
            
        }
        
        return answer;
    }
}

1. 두 숫자중 더 큰 숫자가 무엇인지 모르므로 두 케이스로 나누어서 푼다.

2. 더 큰 숫자가 더 작은 숫자로 나누어 떨어지면 최소공배수와 최대공약수는 바로 정해진다.

3. 나누어 떨어지지 않는다면 1부터 더 작은 숫자까지 돌면서 최대로 나누는 공약수를 구하고 그에 따른 공배수를 구한다.