
๋ฌธ์
ํ์ฑ ์ ๋ ฌ์ ํ์ฑ๋ค์ด ์ผ์ง์ ์ผ๋ก ์ ๋ ฌ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ํ์์ด๋ค. ์ต๊ทผ ์ง๊ตฌ์์๋ 18๋ ๋ง์ ํ์ฑ ์ ๋ ฌ์ ๊ด์ธกํ ์ ์์๋ค.
ํํ์ธ๊ณ์ ์ค์๊ฐ ์ด๊ณ ์๋ ์ง๊ตฌ์์๋ ๊ฐ์ ํ์ฑ์ ๊ด์ธกํ ์ ์๋ค. ์ค์๋ ์ผ๋ง๋ ๊ธฐ๋ค๋ ค์ผ ๊ฐ์ ํ์ฑ์ด ์ผ๋ ฌ๋ก ๋์ด๋๋ ์๊ฐ์ ๋ณผ ์ ์์์ง ๊ถ๊ธํด์ก๋ค.
ํ๋์ ์ด์ฌํ ๊ด์ฐฐํ ๊ฒฐ๊ณผ, ์ค์๋ ๋ค์ ์ฌ์ค๋ค์ ์ ์ ์์๋ค.
- โ๐๊ฐ์ ํ์ฑ์ด ์ผ๋ ฌ๋ก ๋์ด๋๋ ์๊ฐ์ด ์กด์ฌํ๋ค.
- ํ์ฑ ์ ๋ ฌ์ ์ฃผ๊ธฐ๋ 109์ด ์ดํ์ด๋ค.
- 1, 2, 3๋ฒ์งธ ํ์ฑ์ ์ด๋ง๋ค ์ผ๋ ฌ๋ก ๋์ด๋๋ค.
- โ2, 3, 4๋ฒ์งธ ํ์ฑ์ ์ด๋ง๋ค ์ผ๋ ฌ๋ก ๋์ด๋๋ค.
- ...
- ์ด๋ง๋ค ์ผ๋ ฌ๋ก ๋์ด๋๋ค. ๋ฒ์งธ ํ์ฑ์
์ค์๋ฅผ ์ํด ํ์ฑ ์ ๋ ฌ์ ์ฃผ๊ธฐ๋ฅผ ๊ตฌํด์ฃผ์.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ๋ ฌ๋๊ธธ ๋ฐ๋ผ๋ ํ์ฑ์ ๊ฐ์ ์ด ์ฃผ์ด์ง๋ค. ( )
๋์งธ ์ค์ ํ์ฑ์ด ์ผ๋ ฌ๋ก ๋์ด๋๋ ์ฃผ๊ธฐ๋ฅผ ๋ํ๋ด๋ ์ ์ ๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. (
ํ์ฑ ์ ๋ ฌ์ ์ฃผ๊ธฐ๋ฅผ ์ถ๋ ฅํ๋ค. ํ์ฑ ์ ๋ ฌ์ ์ฃผ๊ธฐ๋ ์ด ์ดํ์ด๋ค.
๋ฌธ์ ํ์ด
๋ชจ๋ ํ์ฑ ์ ๋ ฌ ์ฃผ๊ธฐ์ ์ต์ ๊ณต๋ฐฐ์๋ฅผ ๊ตฌํด์ฃผ๋ฉด ๋๋ค.
ํ์ฑ ์ ๋ ฌ์ ์ฃผ๊ธฐ๊ฐ 109์ด ์ดํ๋ผ๋ ์กฐ๊ฑด์ด ์์ผ๋ฏ๋ก 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
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Kotlin ์ฝํ๋ฆฐ ๋ฐฑ์ค 2659 ์ญ์์นด๋ ๋ฌธ์ (0) | 2022.12.16 |
---|---|
Kotlin ์ฝํ๋ฆฐ ๋ฐฑ์ค 2439 ๋ณ ์ฐ๊ธฐ - 2 (1) | 2022.11.17 |