Algorithm

Kotlin ์ฝ”ํ‹€๋ฆฐ ๋ฐฑ์ค€ 25344 ํ–‰์„ฑ ์ •๋ ฌ

๋…ธ๋ฃจ๋ฃฝ 2024. 7. 15. 02:46

๋ฌธ์ œ

ํ–‰์„ฑ ์ •๋ ฌ์€ ํ–‰์„ฑ๋“ค์ด ์ผ์ง์„ ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ํ˜„์ƒ์ด๋‹ค. ์ตœ๊ทผ ์ง€๊ตฌ์—์„œ๋„ 18๋…„ ๋งŒ์— ํ–‰์„ฑ ์ •๋ ฌ์„ ๊ด€์ธกํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

ํ‰ํ–‰์„ธ๊ณ„์˜ ์ค€์„œ๊ฐ€ ์‚ด๊ณ  ์žˆ๋Š” ์ง€๊ตฌ์—์„œ๋Š” ๊ฐœ์˜ ํ–‰์„ฑ์„ ๊ด€์ธกํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค€์„œ๋Š” ์–ผ๋งˆ๋‚˜ ๊ธฐ๋‹ค๋ ค์•ผ ๊ฐœ์˜ ํ–‰์„ฑ์ด ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋˜๋Š” ์ˆœ๊ฐ„์„ ๋ณผ ์ˆ˜ ์žˆ์„์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.

ํ•˜๋Š˜์„ ์—ด์‹ฌํžˆ ๊ด€์ฐฐํ•œ ๊ฒฐ๊ณผ, ์ค€์„œ๋Š” ๋‹ค์Œ ์‚ฌ์‹ค๋“ค์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

  • โ€Š๐‘๊ฐœ์˜ ํ–‰์„ฑ์ด ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋˜๋Š” ์ˆœ๊ฐ„์ด ์กด์žฌํ•œ๋‹ค.
  • ํ–‰์„ฑ ์ •๋ ฌ์˜ ์ฃผ๊ธฐ๋Š” $10^{9}$์ดˆ ์ดํ•˜์ด๋‹ค.
  • 1, 2, 3๋ฒˆ์งธ ํ–‰์„ฑ์€ ์ดˆ๋งˆ๋‹ค ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋œ๋‹ค.
  • โ€Š2, 3, 4๋ฒˆ์งธ ํ–‰์„ฑ์€ ์ดˆ๋งˆ๋‹ค ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋œ๋‹ค.
  • ...
  • ๋ฒˆ์งธ ํ–‰์„ฑ์€ ์ดˆ๋งˆ๋‹ค ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋œ๋‹ค.

์ค€์„œ๋ฅผ ์œ„ํ•ด ํ–‰์„ฑ ์ •๋ ฌ์˜ ์ฃผ๊ธฐ๋ฅผ ๊ตฌํ•ด์ฃผ์ž.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ •๋ ฌ๋˜๊ธธ ๋ฐ”๋ผ๋Š” ํ–‰์„ฑ์˜ ๊ฐœ์ˆ˜ ์ด ์ฃผ์–ด์ง„๋‹ค. ()

๋‘˜์งธ ์ค„์— ํ–‰์„ฑ์ด ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋˜๋Š” ์ฃผ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง„๋‹ค. (

 

ํ–‰์„ฑ ์ •๋ ฌ์˜ ์ฃผ๊ธฐ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ํ–‰์„ฑ ์ •๋ ฌ์˜ ์ฃผ๊ธฐ๋Š” ์ดˆ ์ดํ•˜์ด๋‹ค.


๋ฌธ์ œ ํ’€์ด

๋ชจ๋“  ํ–‰์„ฑ ์ •๋ ฌ ์ฃผ๊ธฐ์˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

ํ–‰์„ฑ ์ •๋ ฌ์˜ ์ฃผ๊ธฐ๊ฐ€ $10^9$์ดˆ ์ดํ•˜๋ผ๋Š” ์กฐ๊ฑด์ด ์žˆ์œผ๋ฏ€๋กœ Int๋Œ€์‹  Long์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜(GCD) ๊ตฌํ•˜๊ธฐ

์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜(LCM)๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜(GCD)๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” '์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•'์ด ์žˆ๋‹ค.

 

๋‘ ์ˆ˜์˜ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋‚˜์˜ฌ ๋–„ ๊นŒ์ง€ ๊ณ„์† ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๋Œ๋ ค์ฃผ๋ฉด ๋œ๋‹ค!

private fun gcd(a: Long, b: Long): Long {
    if (b == 0L) return a
    return gcd(b, a % b)
}

 

์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜(LCM) ๊ตฌํ•˜๊ธฐ

์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋กœ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด,

๋‘ ์ˆ˜์˜ ๊ณฑ์— ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๋‚˜๋ˆ„๋ฉด ๋œ๋‹ค.

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

 

์ฝ”๋“œ

/**
 * ํ–‰์„ฑ ์ •๋ ฌ
 * https://www.acmicpc.net/problem/25344
 */

private var n = 0
private var list = listOf<Long>()

private fun solution() {
    var lcm = list[0]

    for (i in 1 until list.size) {
        lcm = lcm * list[i] / gcd(lcm, list[i])
    }

    println(lcm)
}

private fun gcd(a: Long, b: Long): Long {
    if (b == 0L) return a
    return gcd(b, a % b)
}

private fun input() = with(System.`in`.bufferedReader()) {
    n = readLine().toInt()
    list = readLine().split(" ").map { it.toLong() }
    close()
}

fun main() {
    input()
    solution()
}

 

Reference

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

https://adjh54.tistory.com/179

 

[Java/์•Œ๊ณ ๋ฆฌ์ฆ˜] ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•(Euclidean Algorithm) : ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

ํ•ด๋‹น ๊ธ€์—์„œ๋Š” ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜์—์„œ ์ด๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. 1) ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•(Euclidean Algorithm)๐Ÿ’ก ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•/์•Œ๊ณ ๋ฆฌ์ฆ˜(

adjh54.tistory.com