ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kotlin 🍬 λ°±μ€€ 15단계 :: 13241 번
    2024. 3. 9. 11:07
    λ°˜μ‘ν˜•

    μ΅œμ†Œκ³΅λ°°μˆ˜

    문제   |

      μ •μˆ˜ B에 0보닀 큰 μ •μˆ˜μΈ N을 κ³±ν•΄ μ •μˆ˜ Aλ₯Ό λ§Œλ“€ μˆ˜ μžˆλ‹€λ©΄, AλŠ” B의 λ°°μˆ˜μ΄λ‹€.

      예:

    • 10은 5의 λ°°μˆ˜μ΄λ‹€ (5*2 = 10)
    • 10은 10의 λ°°μˆ˜μ΄λ‹€(10*1 = 10)
    • 6은 1의 λ°°μˆ˜μ΄λ‹€(1*6 = 6)
    • 20은 1, 2, 4,5,10,20의 λ°°μˆ˜μ΄λ‹€.

    λ‹€λ₯Έμ˜ˆ:

    • 2와 5의 μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” 10이고, κ·Έ μ΄μœ λŠ” 2와 5보닀 μž‘μ€ κ³΅λ°°μˆ˜κ°€ μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.
    • 10κ³Ό 20의 μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” 20이닀.
    • 5와 3의 μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” 15이닀.

      당신은 두 μˆ˜μ— λŒ€ν•˜μ—¬ μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„± ν•˜λŠ” 것이 λͺ©ν‘œμ΄λ‹€.

     

    μž…λ ₯   |

      ν•œ 쀄에 두 μ •μˆ˜ A와 Bκ°€ 곡백으둜 λΆ„λ¦¬λ˜μ–΄ 주어진닀.

      50%의 μž…λ ₯ 쀑 A와 BλŠ” 1000(103)보닀 μž‘λ‹€. λ‹€λ₯Έ 50%의 μž…λ ₯은 1000보닀 크고 100000000($10^{8}$)보닀 μž‘λ‹€.

      μΆ”κ°€: 큰 수 μž…λ ₯에 λŒ€ν•˜μ—¬ λ³€μˆ˜λ₯Ό 64λΉ„νŠΈ μ •μˆ˜λ‘œ μ„ μ–Έν•˜μ‹œμ˜€. C/C++μ—μ„œλŠ” long long intλ₯Ό μ‚¬μš©ν•˜κ³ , Javaμ—μ„œλŠ” long을 μ‚¬μš©ν•˜μ‹œμ˜€.

     

    좜λ ₯   |

      A와 B의 μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό ν•œ 쀄에 좜λ ₯ν•œλ‹€.

     

     

    풀이  |

      μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό κ΅¬ν•˜λŠ” ν•¨μˆ˜ gcd() 와 μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό κ΅¬ν•˜λŠ” ν•¨μˆ˜ lcm()을 μ™Έμ›Œλ‘λŠ” 것을 μΆ”μ²œν•œλ‹€. μ—¬κΈ°μ„œ Long으둜 좜λ ₯ν•˜λŠ” 쑰건값이 μΆ”κ°€λ˜μ—ˆμœΌλ―€λ‘œ Intλ₯Ό Long으둜 λ³€ν™˜ν•΄μ€€λ‹€.

     

     

    λ‹΅μ•ˆ  |

    fun main() {
        val (A, B) = readLine()!!.split(" ").map { it.toLong() }
        
        print(lcm(A, B))
    }
    
    fun gcd(a: Long, b: Long): Long {
        return if (b == 0L) a else gcd(b, a % b)
    }
    
    fun lcm(a: Long, b: Long): Long {
        return a * b / gcd(a, b)
    }
    λ°˜μ‘ν˜•

    λŒ“κΈ€

Designed by Tistory.