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

2026. 6. 23. 17:53·PS

 

이 문제는 아주 쉬운 기초문제지만 최소공배수를 표현하는 법을 잊지 않기 위해 블로그에 남기기로 했다.

 

초기 내 코드

class Solution {
    public int[] solution(int n, int m) {
        int[] arr = new int[2];
        
        if (n % m == 0) {
            arr[0] = m;
            arr[1] = n;
        } else if (m % n == 0) {
            arr[0] = n;
            arr[1] = m;
        } else {
            for (int i=1; i<Math.max(n, m); i++) {
                if (m % i == 0 && n % i ==0) {
                    arr[0] = i;
                    int Num1 = m / i;
                    int Num2 = n / i;
                    arr[1] = i * Num1 * Num2;
                }
            }
        }

        return arr;
    }
}

 

최소 공배수를 구하는 코드를 보면 두 수를 최대 공약수로 나눈 값을 저장하는 Num1, Num2 변수 두 개를 생성하여 

"최대 공약수 * Num1 * Num2" 와 같이 세 수를 곱하는 방식을 선택했다.

 

 

그러나 더 좋은 표현 방법이 있다는 것을 알게되었다.

arr[1] = n * m / arr[0];

 

다음과 같이 두 수의 곱을 최대공약수로 나누는 것이다.

초등 수학 레벨이지만 내가 작성했던 직관적인 방식 보다 코드도 짧고 변수를 새로 만들 필요도 없어서 유용해보인다.

'PS' 카테고리의 다른 글

[프로그래머스] 시저 암호  (0) 2026.06.30
[프로그래머스] 이상한 문자 만들기  (0) 2026.06.25
[프로그래머스] 두 개 뽑아서 더하기  (1) 2026.06.12
[프로그래머스] 원하는 문자열 찾기  (0) 2026.06.02
[프로그래머스] 홀짝에 따라 다른 값 반환하기  (0) 2026.05.15
'PS' 카테고리의 다른 글
  • [프로그래머스] 시저 암호
  • [프로그래머스] 이상한 문자 만들기
  • [프로그래머스] 두 개 뽑아서 더하기
  • [프로그래머스] 원하는 문자열 찾기
JK-LEE98
JK-LEE98
백엔드 개발자
  • JK-LEE98
    JK-LEE98
    JK-LEE98
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 나의 지식 공유 (4)
      • SQL (4)
      • PS (10)
      • BackEnd (32)
        • Java (3)
        • Spring (4)
        • 내일배움캠프 (20)
        • 프로그래머스 데브코스 (5)
      • 건강한 나 되기🍀 (10)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
JK-LEE98
[프로그래머스] 최대공약수와 최소공배수
상단으로

티스토리툴바