최대공약수, 최소공배수

ArithmeticException 예외적인 산술 조건이 발생할때

class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[2];
        
        int tmpN = n;
        int tmpM = m;
        
        //최대공약수
        while(true){
            
            if(m%n==0) {
                answer[0] = n;
                break;
            }
            m = n;
            n = m%n;
        }
        //최소공배수
        answer[1] = tmpN*tmpM/answer[0];
            
        return answer;
    }
}

java.lang.ArithmeticException: / by zero
정수 0으로 나누었을 때 나타나는 에러

m%n에서 에러가 난 것 같아서 따로 변수를 선언해주자 성공!

수정 후

class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[2];
        
        int tmpN = n;
        int tmpM = m;
        
        //최대공약수
        while(true){
            int c = m%n;
            if(c==0) {
                answer[0] = n;
                break;
            }
            m = n;
            n = c;
        }
        //최소공배수
        answer[1] = tmpN*tmpM/answer[0];
            
        return answer;
    }
}

좋은 웹페이지 즐겨찾기