본문 바로가기

알고리즘/알고리즘 개념 정리

최대공약수(유클리드 호제법)


나눌 값이 0일때, 나눠질 값을 리턴

 

 

// 최대 공약수 계산 (유클리드 호제법)
		private int gcd(int a, int b) {
			while (b != 0) {
				int temp = b;
				b = a % b;
				a = temp;
			}
			return a;
		}// gcd func end

 

 

public long solution2(int w, int h) {
			long totalCount = (long) w * (long) h;
			long diagonalCount = w + h - BigInteger.valueOf(w).gcd(BigInteger.valueOf(h)).longValue();

			return totalCount - diagonalCount;
		}

 

class Solution {

    public long solution(int w,int h) {

        long answer = 0L;

        long gcd = gcd(w, h);
        answer = (long)w * (long)h - ((long)w + (long)h - gcd);

        return answer;

    }//end of solution

    private long gcd(int w, int h){

        if(w == 0) return h;
        return gcd(h % w, w);

    }//end of gcd

}//end of solution

'알고리즘 > 알고리즘 개념 정리' 카테고리의 다른 글

Greedy  (0) 2024.08.04
DFS  (0) 2024.08.02
[java] Array  (0) 2021.09.27
[java] Math 클래스, String  (0) 2021.09.27
[java] stream  (0) 2021.09.27