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

Jaeny·2021년 11월 1일
0

programmers

목록 보기
8/21
post-thumbnail

2021-11-01 네번째 코딩 일지👻

class Solution {
    public int[] solution(int n, int m) {
		int[] answer = new int[2];
		int big = n > m ? n : m;
		int small = n > m ? m : n;
		
		int gcdValue=gcd(big, small);
		
		answer[0]=gcdValue;
		answer[1]=(n*m)/gcdValue;
		return answer;
    }
    int gcd(int b, int s) {
		if (b % s == 0) {
			return s;
		} else {
			return gcd(s, b % s);
		}
	}
}

오랜만에 최대공약수 최소공배수 알고리즘을 작성해보았다. 기본적으로 최대공약수 알고리즘을 구현할 때는 유클리드 호제법으로 구현한다. 또한 재귀 혹은 반복을 통해 해당 알고리즘을 구현하는 데 나는 재귀를 이용하여 구현하였다. 재귀를 이용하는 방법은 반복을 이용한 코드보다 깔끔하고 언뜻보기에 성능이 좋아보이지만, 메모리를 많이 잡아먹는 경우도 있으니 주의해야 한다.
그렇지만 해당 알고리즘은 간단한 알고리즘이기 때문에 재귀를 이용하여도 메모리를 그렇게 많이 차지하는 것으로 안보였다 :)

profile
조용히 끄적거리는 공부 기록용 : )

0개의 댓글

관련 채용 정보