코테/프로그래머스

[프로그래머스/C#] 최대공약수와 최소공배

내꺼블로그 2024. 3. 13. 12:10

문제


https://school.programmers.co.kr/learn/courses/30/lessons/12940

 

프로그래머스

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

programmers.co.kr

 

 

 

 

 

 

 

 

 

코드


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

 

 

 

 

 

풀이


(1) 최대공약수

1이상 n이하의 자연수 중 n과 m을 나눴을 때 둘 다 나머지가 없는 수를 대입.

(지금 생각해보니 i=n, i>0으로 조건문을 바꿔서 나머지가 없는 수를 바로 봤을 때 break 하는게 더 나아보임.)

 

 

(2) 최소공배수

1이상 m이하의 자연수 중 (n*i(=>자연수))%m==0이 나오는 수를 대입하고 break

                                            ↳최소공배수는 n과 m의 배수이므로 반대로 그 수를 n혹은 m으로 나눴을 때 0이어야 하니까

                                               n의 배수를 m으로 나눴을 때 나머지가 0이면 된다는 생각에서 나온 식!

 

 

 

 

 

다른 사람 풀이