C# 알고리즘 코드카타

39. 최대공약수와 최소공배수

잼잼재미 2023. 11. 21. 10:17

 

using System.Collections.Generic;
using System.Linq;

public class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[2];
        
        int num;
        if(n >= m) {num = n;}
        else {num = m;}
        
        List<int> x = new List<int>();

		// 최대공약수        
        for (int i = 1; i <= num; ++i)
        {
            if(n % i == 0 && m % i == 0)
            {
                x.Add(i);
            }
        }
        answer[0] = x.Max();       
        
		// 최소공배수
        int count = 1;
        while(true)
        {
            if (num * count % n == 0 && num * count % m == 0)
            {
                answer[1] = num * count;
                break;
            }
            count++;
        }
             
        return answer;
    }
}

 * List를 굳이 쓸 필요가 없음

 * 더 큰 숫자를 num으로 가져올 필요가 없음 (a % b 를 할 때, a 가 b보다 작으면 무조건 a 값이 나옴)

 

 

int 최대공약수;
int 최소공배수; 

// 최대공약수
for (int i = 1; i <= num ; i++)
{
    if (n % i == 0 && m % i == 0)
    {
        최대공약수 = i;
    }
}

// 최소공배수
int count = 1;
while (true)
{
	if ((m * count) % n == 0)
    {
    	최소공배수 = m * j;
        break;
    }
    count++;
}

 

'C# 알고리즘 코드카타' 카테고리의 다른 글

41. 이상한 문자 만들기  (0) 2023.11.22
40. 3진법 뒤집기  (0) 2023.11.21
38. 직사각형 별찍기  (1) 2023.11.20
37. 행렬의 덧셈  (1) 2023.11.20
36. 문자열 다루기 기본  (1) 2023.11.20