목차

     

     


     

     

    [백준 1934번 C/C++] 최소공배수 

     

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

     

    1934번: 최소공배수

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

    www.acmicpc.net


     

     

    코드

     

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <vector>
    using namespace std;
    
    vector<int> v;
    
    int main() {
    	int t, a, b, cf;
    	scanf("%d", &t);
    
    	for (int i = 0; i < t; i++) 
    	{
    		cf = 1;
    		scanf("%d %d", &a, &b);
    
    		if(a>b)
    		{
    			for (int j = b; j >= 1; j--)
    			{
    				if (a % j == 0 && b % j == 0)
    				{
    					cf *= j; //공약수를 곱해 최대공약수를 구함. 
    					a /= j;
    					b /= j;
    				}
    			}
    		}
    		else
    		{
    			for (int j = a; j >= 1; j--)
    			{
    				if (a % j == 0 && b % j == 0)
    				{
    					cf *= j; //공약수를 곱해 최대공약수를 구함. 
    					a /= j;
    					b /= j;
    				}
    			}
    		}
    
    		v.push_back(a * b * cf);
    	}
    
    	for (int i = 0; i < v.size(); i++)
    		printf("%d\n", v[i]);
    
    	return 0;
    }

    시간 140m/s

    느리다.

     

    아래에 더 나은 코드가 있다.

     


     

    더 나은 풀이 

     

    #include <stdio.h>
    int GCD(int a, int b)
    {
        return b ? GCD(b, a%b) : a;
    }
    
    int main()
    {
        int T, A, B;
        scanf("%d", &T);
        
        while (T--)
        {
            scanf("%d %d", &A, &B);
            printf("%d\n", A*B / GCD(A, B));
        }
    }

    유클리드 호제법으로 최대공약수를 구한다.

     

    최소공배수 = A * B / 최대공약수

     

     

    위의 코드는 시간 0m/s

     

    https://tech.lonpeach.com/2017/11/12/Euclidean-algorithm/

     

    유클리드 호제법이란? | Lonpeach Tech

    개념

    tech.lonpeach.com

     


     

    '⭐ 코딩테스트 > 백준' 카테고리의 다른 글

    [백준 번 C/C++] ㅇㄹㅇㄴ  (0) 2023.05.01
    [백준 1934번 C/C++] 분수 합  (0) 2023.04.29
    [백준 1010번] 다리 놓기  (0) 2023.04.27
    [백준 2581번 C/C++] 소수  (0) 2023.04.26
    [백준 9506번 C/C++] 약수들의 합  (0) 2023.04.25