https://github.com/Dev-Guccin
Guccin
https://github.com/Dev-Guccin
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 알고리즘 (140)
    • 삽질방지 (13)
    • SystemHacking (1)
    • 일상 (4)
    • 개발 (8)
    • 스프링 부트 REST API 개발일지 (5)
    • JPA (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 이분 탐색
  • 다익스트라
  • 그리디
  • 백준
  • 유클리드호제법
  • 파이썬
  • 재귀
  • heapq
  • DFS
  • python3
  • 유니온 파인드
  • 백트래킹
  • 최단경로
  • 다이나믹 프로그래밍
  • 재귀함수
  • DP
  • 최소힙
  • 스택
  • 프로그래머스
  • 다이나믹프로그래밍
  • 그래프
  • 최대공약수
  • LIS
  • 큐
  • 이분탐색
  • counter
  • BFS
  • MST
  • 12015
  • Python

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
https://github.com/Dev-Guccin

Guccin

알고리즘

백준 1934 풀이 (최소공배수, 유클리드 호제법)

2021. 2. 28. 23:21

저번 2609문제에서 최대공약수와 최소공배수를 구했다. 이번에는 최소 공배수만 구하는 문제이기 때문에 저번에 사용했던 코드를 재활용해주면 아주 쉽게 구할 수 있다.

최소 공배수를 노가다로 구하게 되면 불필요한 연산이 너무 많아진다.

따라서 최대 공약수를 유클리드 호제법으로 구하고

이후에 최소 공배수를 구하는 방식이 효율적이다.

따라서 저번에 활용한 코드를 재활용하는 것이다. 그냥 함수로 묶어 주기만 하면 된다.

n = int(input())

def find(tmp):
    if tmp[0] < tmp[1]:
        t = tmp[0]
        tmp[0] = tmp[1]
        tmp[1] = t
    a = tmp[0]
    b = tmp[1]
    # get 공약수
    yak = 0
    while 1:
        c = tmp[0] % tmp[1]
        tmp[0] = tmp[1] 
        tmp[1] = c
        if tmp[1] == 0:
            break
    yak = tmp[0]
    if yak == 1:
        be = a*b
        print(be)
    else:
        a = a // yak
        b = b // yak
        print(yak * a * b)    

for _ in range(n):
    tmp = list(map(int, input().split()))
    find(tmp)

 

'알고리즘' 카테고리의 다른 글

백준 11050 풀이 (이항 계수 1, 팩토리얼)  (0) 2021.03.01
백준 2981 풀이 (검문, 유클리드 호제법, 약수 구하기)  (0) 2021.03.01
백준 2609 풀이 (최대공약수와 최소공배수, 유클리드 호제법)  (0) 2021.02.28
백준 13305 풀이 (주유소, 그리디 알고리즘)  (0) 2021.02.28
백준 1541 풀이 (잃어버린 괄호, 그리디)  (0) 2021.02.26
    '알고리즘' 카테고리의 다른 글
    • 백준 11050 풀이 (이항 계수 1, 팩토리얼)
    • 백준 2981 풀이 (검문, 유클리드 호제법, 약수 구하기)
    • 백준 2609 풀이 (최대공약수와 최소공배수, 유클리드 호제법)
    • 백준 13305 풀이 (주유소, 그리디 알고리즘)
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin

    티스토리툴바