728x90
문제 링크 : https://www.acmicpc.net/problem/1934
목차
1. 설명
2. 내 코드
3. 문제 풀이 해석 내용
4. 실행 결과
설명
백준 브론즈 1 문제 입니다.
문제명 : 최소공배수
내 코드
int num = int.Parse(Console.ReadLine());
while (num > 0)
{
string a = Console.ReadLine();
string[] b = a.Split();
int A = int.Parse(b[0]);
int B = int.Parse(b[1]);
int index = 1;
int n = 0;
if (A < B) n = A;
else n = B;
for (int i = 1; i <= n; i++)
{
if ((A % i == 0) && (B % i == 0))
{
index = i;
}
}
Console.WriteLine(index * (A / index) * (B / index));
num--;
}
문제 풀이 해석 내용
입력 처리
int num = int.Parse(Console.ReadLine());
사용자로부터 정수를 입력받아 num 변수에 저장합니다.
이 값은 입력받을 쌍의 개수를 나타냅니다.
루프 시작
while (num > 0)
{
num이 0보다 큰 동안 루프를 반복합니다.
각 반복에서는 한 쌍의 정수를 처리합니다.
정수 쌍 입력
string a = Console.ReadLine();
string[] b = a.Split();
int A = int.Parse(b[0]);
int B = int.Parse(b[1]);
사용자로부터 두 개의 정수를 입력받습니다.
그 다음, 이를 공백으로 구분하여 배열 b에 저장합니다.
각 정수를 A와 B에 저장합니다.
최대공약수 계산
int index = 1;
int n = 0;
if (A < B) n = A;
else n = B;
for (int i = 1; i <= n; i++)
{
if ((A % i == 0) && (B % i == 0))
{
index = i;
}
}
index 변수를 1로 초기화합니다.
이 변수는 최대공약수(GCD)를 저장하는 역할을 합니다.
n은 두 수 중 작은 값을 저장합니다.
1부터 n까지 반복하면서, A와 B의 공약수를 찾습니다.
두 수의 공약수 중 가장 큰 값을 index에 저장합니다.
최소공배수 계산 및 출력
Console.WriteLine(index * (A / index) * (B / index));
최소공배수(LCM)는 다음과 같이 계산할 수 있습니다:
[ \text{LCM}(A, B) = \frac{A \times B}{\text{GCD}(A, B)} ]
여기서는 간단히 index (GCD)를 이용하여 LCM을 계산합니다.
계산된 LCM을 출력합니다.
루프 카운트 감소
num--;
처리한 쌍의 개수를 줄여 루프를 계속 진행합니다.
실행 결과
728x90
'C#' 카테고리의 다른 글
백준 C# 1427 문제 풀이 (0) | 2024.10.31 |
---|---|
백준 C# 2741 문제 풀이 (0) | 2024.10.30 |
백준 C# 24264 문제 풀이 (0) | 2024.10.28 |
백준 C# 24263문제 풀이 (0) | 2024.10.27 |
백준 C# 5073 문제 풀이 (0) | 2024.10.26 |