문제 설명

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

제한 조건

두 수는 1이상 1000000이하의 자연수입니다.

입출력 예

abreturn
312[3, 12]
25[1, 10]

💡문제 해결💡

두 수 중에 작은 수와 큰 수를 찾고 1부터 작은 수까지 돌고 j부터 0까지 돌며 공약수를 찾는다
1부터 작은 수까지 돌며 공약수를 곱하면 작은 수가 되는 수를 찾고 그 수와 큰 수를 곱해 공배수를 만든다

작성 코드

class Solution {
    public int[] solution(int n, int m) {
            int[] answer = {0, 0};

            int low = (n < m) ? n : m;
            int high = (n > m) ? n : m;

            for (int i = 1; i <= low ; i++){
                for (int j = low; j > 0 ; j--){
                    if ( (low % (i * j) == 0) && ( high % (i * j) == 0)){
                        answer[0] = i * j;
                    }
                }
            }

            for (int i = 1; i <=low ; i++){
                if (answer[0] * i == low){
                    answer[1] = i;
                    break;
                }
            }
            answer[1] = answer[1] * high;
            return answer;
        }
}

그 외 풀이

profile
안녕하세요. Chat JooPT입니다.

0개의 댓글