λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Programming/Algorithm

[Kotlin] λ°±μ€€ 2609 - μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜(μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•)

728x90
λ°˜μ‘ν˜•

문제

두 개의 μžμ—°μˆ˜λ₯Ό μž…λ ₯λ°›μ•„ μ΅œλŒ€ κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œ 곡배수λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

첫째 μ€„μ—λŠ” 두 개의 μžμ—°μˆ˜κ°€ 주어진닀. 이 λ‘˜μ€ 10,000μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ©° 사이에 ν•œ 칸의 곡백이 주어진닀.

풀이

1. μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό κ΅¬ν•œλ‹€. μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” 큰값을 μž‘μ€κ°’μœΌλ‘œ λ‚˜λˆ„μ—ˆμ„ λ•Œ, λ‚˜λ¨Έμ§€κ°€ λ‚˜μ˜€μ§€ μ•ŠλŠ” 첫 μ‹œμ μ˜ 값이닀.
2. μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μ„ μ•Œκ³ μžˆλƒλŠ” λ¬Έμ œμ΄λ‹€.

μ½”λ“œ

import java.util.*

fun main() = with(Scanner(System.`in`)) {
    var n1: Int = nextInt()
    var n2: Int = nextInt()
    val m: Int	// μ΅œλŒ€κ³΅μ•½μˆ˜
    
    // μ˜ˆμ™Έμ²˜λ¦¬ n1 > n2둜 λ³€ν™˜
    if(n2 > n1){
        val temp = n1
        n1 = n2
        n2 = temp
    }
    
    // μ΅œλŒ€κ³΅μ•½μˆ˜
    m = gcd(n1, n2)
    
    // 좜λ ₯(μ΅œμ†Œκ³΅λ°°μˆ˜ = n1 * n2 / μ΅œλŒ€κ³΅μ•½μˆ˜)
    println("" + m + "\n" + ((n1 * n2) / m))
}

// μœ ν΄λ¦¬λ“œν˜Έμ œλ²•μ„ ν†΅ν•œ μ΅œλŒ€κ³΅μ•½μˆ˜
fun gcd(n1: Int, n2: Int): Int{
    return if(n2 == 0)return n1 else gcd(n2, n1%n2)
}

 

728x90
λ°˜μ‘ν˜•