[프로그래머스] 코딩테스트 연습 - 연습문제 Level 1 최대공약수와 최소공배수

uoahy·2021년 9월 27일
0

Solution.java

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

Solution.java (수정)

class Solution {
    public int[] solution(int n, int m) {
        int gcd, lcm;
        
        int a = n, b = m;
        while (b != 0) {
            int tmp = a % b;
            a = b;
            b = tmp;
        }
        gcd = a;
        
        lcm = n * m / gcd;
        
        return new int[] { gcd, lcm };
    }
}

다른 사람의 풀이를 보니 수학 공식을 사용한 사람이 있었다.

알아보니 유클리드 호제법이란 공식이 있어 그걸 사용해 풀어보았다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

0개의 댓글