본문 바로가기
Kotlin(프로그래머스)/Level 1

[프로그래머스/Kotlin] 최대 공약수와 최소공배수

by Yuno. 2022. 3. 22.
728x90

문제 링크 -> https://kolinuno.tistory.com/38

 

[프로그래머스/Kotlin] 정수 내림차순으로 배치하기

문제 링크 -> https://programmers.co.kr/learn/courses/30/lessons/12933 코딩테스트 연습 - 정수 내림차순으로 배치하기 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순..

kolinuno.tistory.com

문제 설명

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

제한 사항
  • 두 수는 1이상 1000000이하의 자연수입니다.

------------------------------------------------------------풀이------------------------------------------------------------------
* 최대공약수는 두수의 공약수들중 공통되는 가장 큰 공약수이다. -> 유클리드 호재법으로 손쉽게 구할 수 있다. 
* 최소공배수는 두수의 배수들중 공통된느 가장 작은 배수이다. -> (두수의 곱/최대공약수)가 최소공배수이다.

class Solution {
    fun solution(n: Int, m: Int): IntArray {
        var answer = intArrayOf(gcd(n, m), (n*m)/gcd(n,m))
        return answer
    }
    fun gcd( x:Int, y:Int) : Int = if(y !=0) gcd(y , x%y) else x
}

위의 solution함수는 아래처럼 람다식으로 표현할 수 있다.

fun solution(n: Int, m: Int): IntArray = intArrayOf(gcd(n, m), (n*m)/gcd(n,m))

------------------------------------------------------------결과------------------------------------------------------------------

 

 

 

 

 

 

- 문제에 대한 질문 댓글 환영!
- 중간에 잘못된 부분이 있다면 댓글로 남겨주세요. 수정하겠습니다.

728x90

댓글