나를 기록하다
article thumbnail
반응형

최소공배수 성공

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초128 MB56837317972718457.436%

문제

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

두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 둘째 줄부터 T개의 줄에 걸쳐서 A와 B가 주어진다. (1 ≤ A, B ≤ 45,000)

출력

첫째 줄부터 T개의 줄에 A와 B의 최소공배수를 입력받은 순서대로 한 줄에 하나씩 출력한다.

예제 입력 1

3
1 45000
6 10
13 17

예제 출력 1

45000
30
221

풀이

1)

def GCD(a, b):
    if b == 0:
        return a
    else:
        return GCD(b, a % b)


def LCM(a, b):
    ans = a * b // GCD(a, b)
    return ans


T = int(input())
for _ in range(T):
    a, b = map(int, input().split())
    print(LCM(a, b))
  • 풀이과정
    1. 최대공약수를 구하는 함수 GCD(a, b): 이 함수는 재귀를 사용하여 두 정수의 최대공약수를 계산합니다. b가 0일 경우, 최대공약수는 a입니다. 그렇지 않으면, 함수는 b와 a를 b로 나눈 나머지로 다시 호출됩니다. 이 과정이 반복되면서 b가 0이 되면, 최대공약수가 반환됩니다.
    1. 최소공배수를 구하는 함수 LCM(a, b): 이 함수는 두 정수 a와 b의 최소공배수를 계산합니다. 최소공배수는 a와 b를 곱한 값에 최대공약수로 나눈 값입니다. 즉, a * b // GCD(a, b)를 반환합니다.
    1. 테스트 케이스 수를 입력 받는 부분: 테스트 케이스의 수 T를 입력 받아 T = int(input())를 사용하여 정수로 변환합니다.
    1. 각 테스트 케이스에 대해 처리하는 부분: for _ in range(T): 루프를 사용하여 각 테스트 케이스를 처리합니다. 이 때, 두 정수 a와 b를 입력 받아 a, b = map(int, input().split())를 사용하여 정수로 변환합니다.
    1. 각 테스트 케이스에 대한 최소공배수 계산 및 출력 부분: 입력 받은 두 정수 a와 b에 대해 최소공배수를 계산한 후, 결과를 출력합니다.
      print(LCM(a, b))

2)

def gcd(x, y):
    if y == 0:
        return x
    else:
        return gcd(y, x%y)
t = int(input())
for _ in range(t):
    a,b = map(int, input().split())
    g = gcd(a, b)
    print(a*b//g)
  • 풀이과정
    1. 최대공약수를 구하는 함수 gcd(x, y): 이 함수는 재귀를 사용하여 두 정수의 최대공약수를 계산합니다. y가 0일 경우, 최대공약수는 x입니다. 그렇지 않으면, 함수는 y와 x를 y로 나눈 나머지로 다시 호출됩니다. 이 과정이 반복되면서 y가 0이 되면, 최대공약수가 반환됩니다.
    1. 테스트 케이스 수를 입력 받는 부분: 테스트 케이스의 수 t를 입력 받아 t = int(input())를 사용하여 정수로 변환합니다.
    1. 각 테스트 케이스에 대해 처리하는 부분: for _ in range(t): 루프를 사용하여 각 테스트 케이스를 처리합니다. 이 때, 두 정수 a와 b를 입력 받아 a, b = map(int, input().split())를 사용하여 정수로 변환합니다.
    1. 각 테스트 케이스에 대한 최대공약수 계산 부분: 입력 받은 두 정수 a와 b에 대해 최대공약수를 계산한 후, 변수 g에 저장합니다.
      g = gcd(a, b)
    1. 각 테스트 케이스에 대한 최소공배수 계산 및 출력 부분: 최대공약수 g를 사용하여 두 정수 a와 b의 최소공배수를 계산하고 출력합니다. 최소공배수는 a와 b를 곱한 값에 최대공약수로 나눈 값입니다. 즉, a * b // g를 출력합니다.
      print(a * b // g)


Uploaded by N2T

반응형
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...