프로그래머스 최대공약수와 최소공배수 JAVA 풀이 (유클리드호제법, 시간복잡도)

2026. 5. 18. 11:46·코테(Solved.ac + Programmers)
728x90

유클리드 호제법을 활용하여 최대공약수(GCD)와 최소공배수(LCM)를 구하는 문제입니다.


Q

두 수 n, m이 주어질 때:

  • 최대공약수
  • 최소공배수

를 배열 형태로 반환하는 문제


정답

package level1;

public class No33 {
    class Solution {
        public int[] solution(int n, int m) {

            int gcd = getGCD(n, m);

            return new int[]{
                    gcd,
                    (n * m) / gcd
            };
        }

        public static int getGCD(int n, int m){
            if(n % m == 0){
                return m;
            }

            return getGCD(m, n % m);
        }
    }
}

📌 나의 오류

처음에는 ArrayList\[\] 타입으로 반환하려고 했다.

ArrayList<Integer>[] solution(...)

하지만 실제로는 ArrayList 객체 하나만 생성해서 타입 오류가 발생했다.

또한 문제는 배열 반환을 요구하므로 int\[\] 형태로 반환해야 한다.


📌 핵심 포인트

유클리드 호제법

두 수의 최대공약수를 빠르게 구하는 대표 알고리즘이다.

GCD(a,b)=GCD(b,a bmod b)

동작 예시

12, 18
→ 18 % 12 = 6
→ 12 % 6 = 0
→ 최대공약수 = 6

📌 최소공배수 공식

LCM = (n * m) / GCD

최대공약수를 이용하면 최소공배수도 쉽게 구할 수 있다.


📌 한 줄 정리

  • 최대공약수는 유클리드 호제법 사용
  • 최소공배수는 (n \* m) / gcd
  • 반환 타입은 int\[\]

📌 최종 핵심 요약

  • 유클리드 호제법은 코딩테스트 단골 알고리즘
  • 재귀 흐름 이해가 중요
  • GCD와 LCM은 자주 함께 출제된다.

꾸준히 기본 수학 알고리즘을 익혀두면 이후 구현 문제에서도 큰 도움이 된다

728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

프로그램머스 이상한 문자 만들기 (JAVA)  (0) 2026.05.21
프로그래머스 삼총사 JAVA 풀이 (브루트포스, 조합, 시간복잡도)  (0) 2026.05.20
프로그래머스 크기가 작은 부분문자열 JAVA 풀이 (문자열, substring, 시간복잡도)  (0) 2026.05.17
프로그래머스 같은 숫자는 싫어 JAVA 풀이 (스택, 구현, 시간복잡도)  (0) 2026.05.16
프로그래머스 행렬의 덧셈 JAVA 풀이 (2차원배열, 구현)  (0) 2026.05.14
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그램머스 이상한 문자 만들기 (JAVA)
  • 프로그래머스 삼총사 JAVA 풀이 (브루트포스, 조합, 시간복잡도)
  • 프로그래머스 크기가 작은 부분문자열 JAVA 풀이 (문자열, substring, 시간복잡도)
  • 프로그래머스 같은 숫자는 싫어 JAVA 풀이 (스택, 구현, 시간복잡도)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    java
    정보처리기사 실기 기출문제
    수학
    배열
    자바
    기출문제
    정렬
    정보처리기사
    시뮬레이션
    실기
    피보나치
    백엔드개발자
    자료구조
    백준
    solved.ac
    브루트포스
    구현
    level0
    Level2
    dp
    정처기오답노트
    정처기
    문자열
    코딩테스트
    springboot
    프로그래머스
    level1
    알고리즘
    정처기실기
    완전탐색
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 최대공약수와 최소공배수 JAVA 풀이 (유클리드호제법, 시간복잡도)
상단으로

티스토리툴바