๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ฏ | ๋ฐฑ์ค€/๐Ÿ™‚ | Silver

[Kotlin, S1] ๋ฐฑ์ค€ 6064๋ฒˆ ์นด์ž‰ ๋‹ฌ๋ ฅ

by immgga 2024. 8. 11.

์ถœ์ฒ˜: unsplash.com

 

์นด์ž‰ ๋‹ฌ๋ ฅ(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๋ฅผ ๋ณด๊ณ  ์ฐธ๊ณ ํ•ด ๋ณด์ž.

์‚ฌ์ง„ 1-1

ํ‘œ๋ฅผ ๋ณด๋ฉด ํ™•์‹คํžˆ ๊ทœ์น™์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ฐ ํ•ด์—์„œ 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๊ฐ€ ํ•ญ์ƒ ๋งŒ์กฑํ•˜๋„๋ก ๋ฐ˜๋ณต ์กฐ๊ฑด์„ ์„ค์ •ํ•ด ์ฃผ๋ฉด ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•์‹œํ‚ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

728x90