본문 바로가기
java

[java] 백준 13241 최소공배수 자바

by MiaCoder 2024. 1. 26.

 

이 풀이는 유클리드 호제법을 사용하여 최대공약수와 최소공배수를 구하는 문제이다.

 

유클리드 호제법이란 최대공약수를 구하는 공식이다.

 

 

 

위와 같이 a, b가 있을 때 b가  0이 될 때 까지 재귀함수로 돌린다는 것을 알 수 있다.

 

위 공식을 통해 입력받은 값의 최대공약수를 구할 수 있다.

 

그렇다면 최소공배수는 어떻게 구하는가?

 

최소공배수는  a * b / gcd(a, b)로 계산할 수 있다.

 

 코드로 풀어보면 다음과 같다.

 

 

import java.util.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());

        long A = Integer.parseInt(st.nextToken());
        long B = Integer.parseInt(st.nextToken());

        System.out.print(A * B / gcd(A, B));
        // 최소공배수를 구하기 위한 공식

        br.close();

    }

    public static long gcd(long a, long b) {

        long r = a % b;
        // 두 수를 나눈 나머지

        if (r == 0) {
            return b;
            // r이 0이 될 때 까지 나누고, 0이라면 b가 정답이다.

        } else {
            return gcd(b, r);
            // 재귀함수로 b, r을 넣어 다시 gcd를 돌린다.

        }

    }

}

'java' 카테고리의 다른 글

[java] 백준 2485 가로수  (0) 2024.01.26
[java] 백준 1735 분수 합  (0) 2024.01.26
백준 11478 서로 다른 부분 문자열의 개수  (1) 2024.01.24
백준 1269 대칭 차집합 자바 java  (1) 2024.01.24
백준 1764 듣보잡 자바 java  (1) 2024.01.24