[Python] 2609번 최대공약수와 최소공배수

2025. 2. 24. 17:57·coding test/Baekjoon

https://www.acmicpc.net/problem/2609

 

처음에 내가 생각한 코드는 다음과 같다. 두 수가 모두 나누어 떨어지는 수(최대공약수)를 for문을 통해 찾는 것이었다.

a,b=map(int,input().split())
n=min(a,b)

while n>1:
    if a%n==0 and b%n==0: #나머지=0
        break
    else:
        n-=1

print(n)
print(n*(a//n)*(b//n))

물론 이 코드를 제출해서 맞기는 했지만 다른 사람들의 코드를 보면서 얼마나 내가 무식하게 풀었는지 느낄 수 있었다.

from math import*

n,m=map(int,input().split())
print(gcd(n,m),lcm(n,m))

기본 math 라이브러리로 다음과 같이 풀 수 있다.

하지만 대부분 코테에서 라이브러 사용을 권장하지 않으므로 라이브러리를 사용하지 않고 풀게 되면 다음과 같다.

a,b=map(int,input().split())
m=a*b
while b != 0::
    a,b=b,a%b
print(a,m//a)

이는 유클리드 호제법에 따른 알고리즘이다. 

최대공약수, 최소공배수 문제는 유클리드 호제법을 따르면 간단하게 풀 수 있었다.

유클리드 호제법,,, 이산수학 시간에 배웠는데 이걸 까먹고 있었다니,,,

https://ddddewang.tistory.com/entry/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C-%ED%98%B8%EC%A0%9C%EB%B2%95%EC%9D%98-%EC%A6%9D%EB%AA%85-GCDabGCDbab

 

유클리드 호제법의 증명 | GCD(a,b)=GCD(b,a%b)

유클리드 호제법이란? 유클리드 호제법은 a와 b의 최대공약수가 b와 a%b의 최대공약수와 같다 으로 정의할 수 있다. 다른 말로는 GCD( a,b ) = GCD( b, a%b ) 이다. 오늘은 이 공식을 증명해보자. int GCD(int

ddddewang.tistory.com

 

 

간략하게 유클리드 호제법을 증명하게 되면 (자세한 건 위의 다른 분이 증명해 주신 거 보시면 됩니다.)

 

'coding test > Baekjoon' 카테고리의 다른 글

[Python] 2583번 영역 구하기 / DFS  (0) 2025.04.13
[Python] 4963번 섬의 개수 / 재귀함수.ver  (0) 2025.04.08
[Python] 1260번 DFS와 BFS  (0) 2025.02.24
[Python] 16916번 부분 문자열  (0) 2025.02.18
[Python] 3085번 사탕게임  (0) 2025.02.18
'coding test/Baekjoon' 카테고리의 다른 글
  • [Python] 2583번 영역 구하기 / DFS
  • [Python] 4963번 섬의 개수 / 재귀함수.ver
  • [Python] 1260번 DFS와 BFS
  • [Python] 16916번 부분 문자열
wish404
wish404
자동 로그
  • wish404
    wish-log
    wish404
    • 홈
    • 태그
    • 방명록
    • github
    • 분류 전체보기 (75)
      • log (8)
        • 블로그 관리 (5)
        • 에러 모음 (2)
      • coding test (47)
        • Algorithm (4)
        • Baekjoon (34)
        • SW Expert Academy (6)
        • etc (3)
      • 프로그래밍 언어 (7)
        • JAVA (7)
      • 데이터 엔지니어링 (5)
        • Kafka (0)
        • Spark (4)
        • Airflow (1)
        • Elasticsearch (0)
      • 머신러닝&딥러닝 (3)
        • Kaggle 스터디 (3)
        • 논문 리뷰 (0)
        • MLOps (0)
      • 신입 개발자가 되기까지 (5)
        • 취준일기 (1)
        • SSAFY (2)
        • 프로젝트 (1)
        • CS 공부 (1)
  • 인기 글

  • 태그

    중위순회
    벨만포드
    heapq
    최단 경로
    복습해야지
    전위순회
    후위순회
    dfs
    다익스트라
    그리디 알고리즘
    Dijkstra
    그리디
    dijk
    복습
    SSAFY
    플로이드워샬
    BFS
    dp
    싸피
    틀린문제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
wish404
[Python] 2609번 최대공약수와 최소공배수
상단으로

티스토리툴바