본문 바로가기
Baekjoon/[2] 수학

[백준] 1934번 최소공배수 JAVA (자바) 풀이

by Poorm 푸름 2023. 8. 19.

문제 1934번

 

 [입력]


 :  첫째 줄에는 두 개의 자연수


 [출력]


 :  첫째 줄에는 테스트 케이스의 개수 

    둘째 줄부터는 두 수의 최소 공배수 출력

 

 [팁]


 :  최소공배수는 유클리드 호제법을 이용한다

 

  <유클리드 호제법>

  - 최대공약수 = GCD

  -  A와 B의 최대공약수를 (A,B)라고 할 때 최대공약수 (B,R)의 최대공약수와 같다

  -  A, B ∋   ( A ≥ B )

  -  R = A를 B로 나눈 나머지

  -  GCD(A,B) = GCD(B,R)

 

  - 최소공배수 = LCM

  - A와 B의 최소공배수는 GCD × (A/GCD) × (B/GCD) = (A×B) / GCD

 

 [코드]

import java.io.*;
import java.util.*;
public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());
       
        for(int i =0; i<T;i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            int A = Integer.parseInt(st.nextToken());
            int B = Integer.parseInt(st.nextToken());
            int G = gcd(A,B);
            int L = A*B/G;
            System.out.println(L);
        }
    }
    public static int gcd(int A, int B){
        if(B==0)
            return A;
        else
            return gcd(B,A%B);
    }
}

 

 [해설]
     

 :  int T = Integer.parseInt(br.readLine());  첫째줄 입력

 

 :  for(int i=0; i<T; i++){  StringTokenizer 부터는 for 문에 넣어야 돌아간다
         StringTokenizer st = new StringTokenizer(br.readLine());  둘째줄부터 입력을 공백단위로 읽어온다
         int A = Integer.parseInt(st.nextToken());  입력 받은 숫자 A, B
         int B = Integer.parseInt(st.nextToken());

         int G = gcd(A,B);  최대공약수

         int L = A*B/G;  최소공배수
         System.out.println(L);  최소공배수 출력

   }

 :  public static int gcd (int A, int B){  매번 갱신되는 gcd 정의 
        if(B==0)
            return A;  B값이 0이 되면 A 호출 ( = A가 최대공약수 G가 된다 )
        else
            return gcd(B,A%B);  B값이 0이 아니라면 B를 (A자리)로 데려오고  
    }                                        A를 B로 나눈 나머지를 (B자리)에 대입
   

       

 

이제 풀어보러 갈께요 :)

 

 

https://www.acmicpc.net/problem/1934

 

1934번: 최소공배수

두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있

www.acmicpc.net

 

 

* 독학으로 익히는 코딩이라 틀린 것이 있을 수 있습니다. 오류가 있다면 댓글을 통해 알려주세요. 감사합니다. *