프로그래머스에서 숫자 카드 나누기 문제를 풀었습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/135807
문제에 대한 설명은 위의 링크에서 확인하시면 됩니다.
두 개의 배열의 각각 최대 공약수가 상대편 배열의 최대공약수가 되지 않는 것이 이 문제의 핵심입니다.
먼저 배열을 오름차순으로 정렬합니다.(35 ~ 36라인)
각 배열의 최대공약수를 조회합니다.(38 ~ 39라인, 50 ~ 58라인, 60 ~ 68라인)
최대공약수를 조회할 때 유클리드 알고리즘을 사용해야 합니다.(60 ~ 68라인)
그렇지 않고 숫자 하나씩 최대공약수를 구하게 되면 시간제한에 걸리기 때문입니다.
각 배열의 최대공약수를 비교하여 큰 최대공약수를 기준으로 상대편 배열에 적용되는지 확인한 뒤
상대편 배열에도 최대공약수가 적용되면 해당 결과의 값은 0으로 리턴하고, 그렇지 않으면 최대공약수를 리턴합니다. (41 ~ 45라인, 70 ~81라인)