프로그래머스 - LV1. 최대공약수와 최소공배수(다시)

김소정·2022년 3월 2일
0

프로그래머스

목록 보기
11/35

❔ 문제

❗ 내 풀이

class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[2];
        int gcd = 0;
        int lcm = 0;
        
        // (포인트) n부터 0까지 줄여가면서 나머지가 0인 숫자가 gcd
        for(int i = n; i > 0; i--){
            if(n % i == 0 && m % i == 0){
                gcd = i;
                break;
            }
        }
        
        lcm = gcd * (n/gcd) * (m/gcd);
        
        answer[0] = gcd;
        answer[1] = lcm;
        
        return answer;
    }
}

🚩참고 (다른 풀이)


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

}

📝 정리

💬 최대공약수(gcd) - 나눠서 두 수 모두 나머지가 0인 수
💬 최소공배수(lcm) - 최대공약수 (m / 최대공약수) (n / 최대공약수) 또는 n * m / 최대공약수

✔ 풀 때마다 해매는 문제이므로 꼭 다시 풀어보자..!


profile
개발자 가보자고

0개의 댓글

관련 채용 정보