[ 수학 ] 백준 2609 최대공약수와 최소공배수, Kotlin, 유클리드 알고리즘

2024. 3. 16. 20:46·개인공부/알고리즘

문제 링크

 

2609번: 최대공약수와 최소공배수

첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.

www.acmicpc.net

 

💡문제 분석 요약

  • 두 자연수의 최대 공약수(GCD)와 최소 공배수(LCM)을 구해야한다. 
    • 최대 공약수는 두수를 나머지 없이 나누는 가장 큰수를 의미한다.
    • 최소 공배수는 두 수로 균등하게 나누어지는 가장 작은 수를 의미한다.

 

💡알고리즘 설계

  • GCD: a와 b의 GCD를 찾기위해 *유클리드 알고리즘을 사용한다. 
  • LCM: GCD를 찾으면, 공식(LCM = (a * b) / a와 b의 GCD)을 활용하여 계산한다.

 

💡코드

import java.util.*

fun gcd(a: Int, b: Int): Int {
    return if (b == 0) a else gcd(b, a % b)
}

fun lcm(a: Int, b: Int): Int {
    return a * b / gcd(a, b)
}

fun main() {
    val scanner = Scanner(System.`in`)
    val a = scanner.nextInt()
    val b = scanner.nextInt()

    println(gcd(a, b))
    println(lcm(a, b))
}

 

 

💡시간복잡도

  • GCD 계산: 유클리드 알고리즘의 시간 복잡도는 O(log min(a,b) 이다.
  • LCM 계산: LCM 계산에 GCD를 사용하므로, 복잡도는 GCD의 영향을 받아, LCM의 시간복잡도는 O(log min(a,b)) 가 된다.

 

따라서 시간복잡도는 O(log min(a,b)가 된다.

 

💡 느낀점 or 기억할정보

  • GCD와 LCM의 관계를 이해하고 있어야 하며, 관련된 개념또한 알고 있어야 한다. 
  • GCD를 계산하는 효과적인 알고리즘인 유클리드 알고리즘을 인지하고 있어야 한다.
728x90
저작자표시 (새창열림)

'개인공부 > 알고리즘' 카테고리의 다른 글

[ 탐색 ] 백준 1261번 알고스팟, 다익스트라  (1) 2024.03.27
[ 탐색 ] 백준 13549 숨박꼭질 3  (0) 2024.03.25
[ 수학 ] 백준 17427 약수의 합 2 kotlin  (0) 2024.03.15
[ DP ] 백준 15988번 1, 2, 3 더하기 3, Kotlin  (0) 2024.03.14
[ 그리디 ] 백준 1783 병든 나이트  (0) 2024.03.07
'개인공부/알고리즘' 카테고리의 다른 글
  • [ 탐색 ] 백준 1261번 알고스팟, 다익스트라
  • [ 탐색 ] 백준 13549 숨박꼭질 3
  • [ 수학 ] 백준 17427 약수의 합 2 kotlin
  • [ DP ] 백준 15988번 1, 2, 3 더하기 3, Kotlin
KEEMSY
KEEMSY
JUST DO IT
목적, 수단, 목표JUST DO IT
KEEMSY
목적, 수단, 목표
KEEMSY
전체
오늘
어제
  • 분류 전체보기
    • 회고
      • WIL
      • TIL
    • Project
    • 개인공부
      • 알고리즘
      • 아키텍처
      • 트러블슈팅
      • 테스팅
      • git
      • 배포

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

hELLO· Designed By정상우.v4.5.2
KEEMSY
[ 수학 ] 백준 2609 최대공약수와 최소공배수, Kotlin, 유클리드 알고리즘

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.