Jam's story

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

코딩테스트/프로그래머스

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

애플쩀 2022. 8. 10. 18:38

 

import java.util.*;
class Solution {
    public static int[] solution(int n, int m) {
        int[] answer = new int[2];
        int max=0 ,num=0; ;
        //두수중에서 작은수는 
        int twoMax=(n>m)?m:n;
        for(int i=1; i<=twoMax; i++){
            if(twoMax%i==0 && m%i==0) {
              num=i;
              num=max<num? num:max;
             System.out.println("num: "+num); 
            }
        }//for-i
        
        int b=num*(n/num)*(m/num);
        answer[0]=num;
        answer[1]=b;
        return answer;
    }
    public static void main(String[] args){
     solution(3,12);    
    }
}

 

import java.util.*;
class Solution {
    public static int[] solution(int n, int m) {
        int[] answer = new int[2];
        int max=0 ,num=0;
        //두수중에서 작은수는 
        int twoMax=(n>m)?m:n;
        for(int i=1; i<=twoMax; i++){
            if(twoMax%i==0 && m%i==0) {
              num=i;
              num=max<num? num:max;
             System.out.println("num: "+num); 
            }
        }//for-i
        int b=0;
       if(num==1){b=n*m; }
        else{
            b=n*m/num;
        }
        answer[0]=num;
        answer[1]=b;
        return answer;
    }
    public static void main(String[] args){
     solution(3,12);    
    }
}

4,8,14,16 실패

 

유클리드 호제법 사용

두 수의 나머지가 0이 될때까지
계속해서 반복하며 나머지를 구하는 방식이라고 생각하면 된다.

 

https://velog.io/@lifeisbeautiful/Java-%EC%9E%90%EB%B0%94-%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C-%ED%98%B8%EC%A0%9C%EB%B2%95%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%B4-%EC%B5%9C%EB%8C%80%EA%B3%B5%EC%95%BD%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0

import java.util.*;
class Solution {
     public int[] solution(int n, int m) {

        int a = Math.max(n, m);
        int b = Math.min(n, m);
	
        while (b != 0) {
            int r = a % b;	
            a = b;	
            b = r;
        }
	//최대 공배수 = 두 수의 곱 / 최대공약수
        return new int[] { a, n * m / a };
    }
}

 

Comments