์นด์ ๋ฌ๋ ฅ(6064๋ฒ)
Silver 1
#์ํ #๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ #์ ์๋ก #์ค๊ตญ์ธ์ ๋๋จธ์ง ์ ๋ฆฌ
https://www.acmicpc.net/problem/6064
๋ฌธ์ ๋ด์ฉ
๋ฌธ์ ์ ๊ทผ
์นด์ ์ ๊ตญ์ ๋ฌ๋ ฅ ํ์์ x : y ํ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ x, y๋ฅผ ์ ํ๊ธฐ ์ํด m, n์ ์ฌ์ฉํ๋ค.
์ ๋ฌธ์ ์ค๋ช ์ ํด์ํด ๋ณด์๋ฉด x < m์ผ ๋ x' = x + 1์ด๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด x' = 1์ด๋ผ๊ณ ๋์ด ์๋๋ฐ ์ด๋
m = 12์ผ ๋ x๊ฐ 12๊ฐ ๋๋ฉด 1๋ก ์ด๊ธฐํ๋๋ค๋ ๋ป์ด๋ค. ์ด๋ x๊ฐ 1๋ถํฐ 12๊น์ง ๋ฐ๋ณต๋๋ค๋ ๋ป์ด๋ค. y๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
์ด ์ฌ์ค์ ์์์ผ๋ฉด ๋์น๊ฐ ๋น ๋ฅธ ๋ถ๋ค์ ๊ท์น ํ์ ์ ์ฑ๊ณตํ์ ๊ฒ์ด๋ค. ๊ทธ๋ผ ๋ฐ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฌ ๊ฐ์๋ฉด ๋๋ค.
์๋ฅผ ๋ค์ด m = 10์ด๊ณ , n = 12์ผ ๋ ๋ง์ง๋ง ํด๋ 60์ด๋ค.
m์ด 10์ด๋ฉด x๋ 1๋ถํฐ 12๋ฅผ ๋ฐ๋ณตํด์ ๋๊ฒ ๋๊ณ y๋ 1๋ถํฐ 10๊น์ง ๋๊ฒ ๋๋ค.
ํด๊ฐ ์ง๋จ์ ๋ฐ๋ผ x์ y๊ฐ ์ฆ๊ฐํ๋๋ฐ m ๋๋ n์ ๋๋ฌํ๋ฉด 1๋ก ๋์๊ฐ๋ ๊ตฌ์กฐ๋ฅผ ๋๊ณ ์๋ค. ์ด๋ฅผ ์ด์ฉํด m๊ณผ n์ ๋ง์ง๋ง ํด๋ฅผ ๊ตฌํ ์ ์๋ค. ๋ฐ๋ก ์ต์๊ณต๋ฐฐ์์ด๋ค.
m์ด 10์ด๊ณ , n์ด 12์ผ ๋ 10๊ณผ 12์ ์ต์๊ณต๋ฐฐ์๋ 60์ด๋ค. ๊ทธ๋ฆฌ๊ณ 60๊น์ง x, y๋ฅผ ๊ณ์ฐํด ๊ฐ๋ฉด์ ๊ฐ๋ค ๋ณด๋ฉด 60์ผ ๋ ๋ฑ x, y๊ฐ ๊ฐ๊ฐ 10, 12๊ฐ ๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ x์ y๋ฅผ ํธํ๊ฒ ๊ตฌํ ๋ฐฉ๋ฒ์ ์์๊น? ์๋ค.
๋ฐ๋ก ๋๋จธ์ง๋ฅผ ์ด์ฉํด x์ y๋ฅผ ๊ตฌํ ์ ์๋ค.
m = 10์ด๊ณ , n = 12์ผ ๋, 14๋ ์งธ๋ผ๊ณ ๊ฐ์ ํ๋ฉด, 36์ m์ผ๋ก ๋๋ ๋๋จธ์ง๋ 14 % 10 = 4์ด๊ณ , n์ผ๋ก ๋๋ ๋๋จธ์ง๋ 14 % 12 = 2๋ผ์ ๋ฌ๋ ฅ์ 4, 2๊ฐ ๋๋ค.
๋ด๊ฐ 20๋ ๊น์ง ์ ์ํ x, y๋ฅผ ๋ณด๊ณ ์ฐธ๊ณ ํด ๋ณด์.
ํ๋ฅผ ๋ณด๋ฉด ํ์คํ ๊ท์น์ ์ดํดํ ์ ์์ ๊ฒ์ด๋ค. ๊ฐ ํด์์ m์ ๋๋ ๋๋จธ์ง๊ฐ x์ด๊ณ , n์ ๋๋ ๋๋จธ์ง๊ฐ y๊ฐ ๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ฌธ์ ๋ก ๋์๊ฐ์ m, n, x, y๊ฐ ์ฃผ์ด์ง ๋, x : y๊ฐ ๋ช ๋ ์ธ์ง ๊ตฌํด์ผ ํ๋ค.
๋จ์ํ 1๋ ๋ถํฐ m, n์ ์ต์๊ณต๋ฐฐ์๊น์ง ๋ฐ๋ณตํ๋ฉด์ ๋์จ ๋ ๋์์ m๊ณผ n์ ๋๋ ๋๋จธ์ง๊ฐ x, y๋ผ๋ฉด ๊ทธ ํด๊ฐ ์ ๋ต์ด ๋๋ค.
๋ฌธ์ ํด๊ฒฐ ์ฝ๋
import java.io.BufferedReader
import java.io.InputStreamReader
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val case = readLine().toInt()
val sb = StringBuilder()
for (i in 0 until case) {
val (m, n, x, y) = readLine().split(" ").map { it.toInt() }
val gcd = if (m > n) gcd(m, n) else gcd(n, m)
val lcm = m * n / gcd
var year = -1
for (j in x .. lcm step m) {
val ry = if (j % n == 0) n else j % n
if (ry == y) {
year = j
break
}
}
sb.append("${year}\n")
}
println(sb)
}
private fun gcd(b: Int, s: Int): Int {
val r = b % s
return if (r == 0) s
else gcd(s, r)
}
๋ฌธ์ ํ์ด
๋จผ์ m, n์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํด ์ค๋ค. ์ด ๊ฐ์ด ๋ฐ๋ณต์ ๋์ด ๋ ๊ฒ์ด๋ค.
๋ฐ๋ณต์ x๋ถํฐ lcm๊น์ง ํด์ฃผ๋๋ฐ step์ ์ด์ฉํด m์ ํด์ฃผ์๋ค. ์ด๋ ๊ฒ ๋๋ฉด ์๋์ผ๋ก ๋๋จธ์ง๊ฐ x์ธ ๊ฐ๋ง ๋์ค๊ธฐ ๋๋ฌธ์ ๋ก ๋๋๋ ์์ ์ ํ์ง ์์๋ ๋๊ณ ์๊ฐ๋ ์ ์ฝํ ์ ์๋ค.
๋ฐ๋ณต ์์์๋ x๋ฅผ ์ด๋ฏธ ๋ง์กฑํ๋ ๋ ๋์์ y๋ฅผ ๋ง์กฑํ๋์ง ํ์ธํ๋ฉด ๋๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํด์ผ ํ ์ฌํญ์ด y๋ n๊น์ง ์ปค์ง ์ ์๋ค. ๋ค๋ฅด๊ฒ ๋งํ๋ฉด n์ด 12์ด๋ฉด y๋ 12๊น์ง ์ปค์ง ์ ์๋ค๋ ๋ป์ด๋ค.
์ด๋ฅผ ๋๋ ๋๋จธ์ง๊ฐ 0์ด ๋ผ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ฒ๋ฆฌํด์ ry๋ก ๋ง๋ค์ด ์ค๋ค.
ry๊ฐ y๋ ๊ฐ์ผ๋ฉด y๋ ๋ง์กฑํ๋ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต์ ๋น ์ ธ๋์จ๋ค.
๋ฌธ์ ํด๊ฒฐ ๊ณผ์
๋ฐ๋ณต๋ฌธ ์์ x, y๋ฅผ ๋์์ ์ฒ๋ฆฌํ๋๋ก ์ฝ๋๋ฅผ ์ง๋ฉด ์ต๋ ๋ฐ๋ณต์ 16์ต ๋ฒ ๋์์ผ ํด์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋์ ์์ x๋ถํฐ ์์ํด step์ผ๋ก m์ฉ ๋ฐ์ด๋์ด x๊ฐ ํญ์ ๋ง์กฑํ๋๋ก ๋ฐ๋ณต ์กฐ๊ฑด์ ์ค์ ํด ์ฃผ๋ฉด ์๊ฐ์ ํฌ๊ฒ ๋จ์ถ์ํฌ ์ ์์ ๊ฒ์ด๋ค.
'๐ฏ | ๋ฐฑ์ค > ๐ | Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin, S3] ๋ฐฑ์ค 15649๋ฒ N๊ณผ M(1) (0) | 2024.08.13 |
---|---|
[Kotlin, S1] ๋ฐฑ์ค 11403๋ฒ ๊ฒฝ๋ก ์ฐพ๊ธฐ (0) | 2024.08.11 |
[Kotlin, S3] ๋ฐฑ์ค 31883๋ฒ FA์์ ์ง (0) | 2024.08.09 |
[Kotlin, S5] ๋ฐฑ์ค 9196๋ฒ ์ ์ ์ง์ฌ๊ฐํ (0) | 2024.08.09 |
[Kotlin, S5] ๋ฐฑ์ค 1340๋ฒ ์ฐ๋ ์งํ๋ฐ (0) | 2024.08.08 |