코테/프로그래머스

[프로그래머스/Lv. 1] 최대공약수와 최소공배수

imname1am 2023. 2. 20. 13:47
반응형

내 코드 (틀림)

class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[2];
        
        // 최대공약수 계산
        for(int i=1 ; i <= Math.min(n,m) ; i++) {
            if(n % i == 0 && m % i == 0) answer[0] = i;
        }
        
        // 최소공배수 계산
        if(Math.max(n,m) % Math.min(n,m) == 0) answer[1] = Math.max(n,m);
        else                                   answer[1] = n * m;
        
        
        return answer;
    }

}

일단 유클리드 호제법 안 쓰고 그냥 구해보았다.... (하지만 틀림)

 

내 코드 (정답)

class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[2];
        
        // 최대공약수 계산
        for(int i=1 ; i <= Math.min(n,m) ; i++) {
            if(n % i == 0 && m % i == 0) answer[0] = i;
        }
        
        // 최소공배수 계산
        answer[1] = n * m / answer[0];
        
        return answer;
    }

}

최소공배수 계산식을 바꿔보았다... (최대공약수 이용!)

 

다른 분들은 어찌 푸셨나 하고 다른 정답 코드도 보았다.

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[2];
        for (int i = 1; i < n + m; i++) {
            if (n % i == 0 && m % i == 0) {
                answer[0] = i;
                answer[1] = n * m / answer[0];
            }
        }
        return answer;
    }

}

나랑 다르게 작성하신 부분은

1) for문의 i 범위가 n+m까지라는 점

2) 최소공배수 구하는 식을 for문 안에 넣은 점

이 되겠는데 큰 차이는 없는 것 같다.ㅎㅎ


(참고)

 

[Java]최대 공약수, 최소 공배수 구하기(feat.유클리드 호제법)

안녕하세요 코북입니다. 오늘은 최대 공약수와 최소 공배수를 구하는 문제를 풀어봤습니다. 풀이가 다양하여 제가 푼 방식을 공유해보려고 합니다. 첫 번째 방식은 문제에 나와있는 것처럼 최

cobook.tistory.com

 

반응형