목차
백준 단계별로 풀어보기
25.11.06
15단계: 약수, 배수와 소수 2
13241번: 최소공배수
문제 링크 : https://www.acmicpc.net/problem/13241
문제를 풀기 위해 알아야 할 개념
>> 유클리드 호제법
: 아래 링크에 정리해두었다.
유클리드 호제법을 활용하여 최대공약수, 최소공배수 구하기
목차유클리드 호제법 (Euclidean Algorithm): 두 자연수의 최대공약수를 구하는 알고리즘. 이때 호제법이란 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 뜻한다.--> 두 자연
mobics.tistory.com
문제 풀이
: 유클리드 호제법을 활용하여 최대공약수를 구하고, 최대공약수를 활용하여 최소공배수를 구한다. (재귀함수 형태로 풀어보았다.)
--> 최소공배수를 구하기 위해 두 입력값을 곱할 때, 입력값의 최댓값이 10⁸ 보다 작은 값이므로 int 자료형으로는 담을 수 없기에 long 자료형을 사용한다.
- StreamReader로 입력값을 받아 각각 long값으로 변환하여 정수를 담을 변수 a 와 b 에 담는다.
- 삼항연산자를 활용하여 a 와 b 를 비교하고, 그에 맞게 유클리드 호제법을 활용하여 만든 GCD 함수에 넣어 최대공약수를 계산하고 변수 gcd 에 담는다.
- 계산한 최대공약수를 활용하여 최소공배수를 구하여 출력한다.
정답 코드
using System.IO;
class Backjoon
{
static void Main(string[] args)
{
using var sr = new StreamReader(Console.OpenStandardInput());
using var sw = new StreamWriter(Console.OpenStandardOutput());
string[] input = sr.ReadLine().Split();
long a = long.Parse(input[0]);
long b = long.Parse(input[1]);
long gcd = a > b ? GCD(a, b) : GCD(b, a);
sw.Write(a * b / gcd);
}
static long GCD(long a, long b)
{
if (b == 0)
return a;
return GCD(b, a % b);
}
}'Development > Baekjoon' 카테고리의 다른 글
| [C#] 2485번: 가로수 (0) | 2025.11.08 |
|---|---|
| [C#] 1735번: 분수 합 (0) | 2025.11.07 |
| [C#] 1934번: 최소공배수 (0) | 2025.11.05 |
| [C#] 11478번: 서로 다른 부분 문자열의 개수 (0) | 2025.11.04 |
| [C#] 1269번: 대칭 차집합 (0) | 2025.11.03 |