공부 흔적남기기

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

코테/프로그래머스

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

65살까지 코딩 2022. 1. 16. 23:10
728x90
반응형
class Solution {
    public int[] solution(int n, int m) {

        if( n > m){
            int temp = n;
            n = m;
            m = temp;
        }
        System.out.println(mindiv(n,m));
        System.out.println(maxmul(n,m));
        int[] answer = {mindiv(n,m), maxmul(n,m)};
        return answer;
    }

     //유클리드 호제법을 사용하면 코드를 짧게 구성할 수 있지만 (재귀 방식으로)
    //그냥 직관적으로 짜봄
                //n<m
    public int maxmul(int n, int m){
        int old_m = m;
        //최소 공배수는 가장 작으면서 두 수로 나눠져야 하기 떄문 반복문으로 해결
        while(true){
            if(m%old_m ==0 && m%n ==0){
                return m;
            }
            m++;
        }
    }
   
                    //n <m
    public int mindiv(int n, int m){
        int go =0;
        //  최대 공약수 우리가 흔히 생각하는 방법
        for(int i=1; i<=n; i++){
            if(n%i ==0 && m%i ==0){
               go = i;
            }
        }
        return go;
    }
}

출처 : https://programmers.co.kr/learn/courses/30/lessons/12940

 

코딩테스트 연습 - 최대공약수와 최소공배수

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의

programmers.co.kr

 

728x90
반응형