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

[Kotlin, S3] ๋ฐฑ์ค€ 32186๋ฒˆ ์—ญ์‹œ ๋‚ด ์ด์„ธ๊ณ„ ์ˆ˜์—ด์€ ์ž˜๋ชป๋๋‹ค

by immgga 2024. 12. 18.
๋ฐ˜์‘ํ˜•

์ถœ์ฒ˜: unsplash.com

 

์—ญ์‹œ ๋‚ด ์ด์„ธ๊ณ„ ์ˆ˜์—ด์€ ์ž˜๋ชป๋๋‹ค(32186๋ฒˆ)

Silver 3

#์ˆ˜ํ•™ #๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜

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

 

๋ฌธ์ œ ๋‚ด์šฉ

 

 

๋ฌธ์ œ ์ ‘๊ทผ

๊ฐ ์œ„์น˜์— ๋งž๋Š” index์˜ ๊ฐ’ 2๊ฐœ๋ฅผ +k ์—ฐ์‚ฐ๊ณผ +1 ์—ฐ์‚ฐ์„ ์ด์šฉํ•ด ๊ฐ™์€ ๊ฐ’์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

๊ฐ’ 2๊ฐœ ์ค‘ ์ž‘์€ ๊ฐ’์„ ํฐ ๊ฐ’์— ๋”ฑ ๋งž๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๊ณผ

์ž‘์€ ๊ฐ’์— +k ์—ฐ์‚ฐ์„ ๋ฐ˜๋ณตํ•ด ํฐ ๊ฐ’๋ณด๋‹ค ์ปค์ง€๋„๋ก ๋งŒ๋“ค๊ณ  ํฐ ๊ฐ’์— +1 ์—ฐ์‚ฐ์„ ํ•ด์„œ ๊ฐ’์„ ๋งž์ถ”๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด k๊ฐ€ 7์ด๊ณ  5์™€ 28์ด ๋งค์นญ๋˜๋Š” ๊ฐ’์ผ ๋•Œ

5๋ฅผ 28๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” 5์— 7์„ 3๋ฒˆ ๋”ํ•˜๊ณ  1์„ 2๋ฒˆ ๋”ํ•˜๋ฉด 28์ด ๋œ๋‹ค(์—ฐ์‚ฐ ํšŸ์ˆ˜ 5๋ฒˆ).

๊ทธ๋ฆฌ๊ณ  5์— 7์„ 4๋ฒˆ ๋”ํ•˜๋ฉด 33์ด ๋˜๋Š”๋ฐ, 28์— 1์„ 5๋ฒˆ ๋”ํ•˜๋ฉด ๋‘ ๊ฐ’์ด ๋ชจ๋‘ 33์ด ๋œ๋‹ค(์—ฐ์‚ฐ ํšŸ์ˆ˜ 9๋ฒˆ).

 

์œ„์˜ 2๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ• ์ค‘์—์„œ ๋” ์ ์€ ์—ฐ์‚ฐ ํšŸ์ˆ˜์ธ ๊ฒฝ์šฐ๋งŒ ํƒํ•ด์„œ total ์—ฐ์‚ฐ ํšŸ์ˆ˜์— ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

๋ฌธ์ œ ํ•ด๊ฒฐ ์ฝ”๋“œ

๋”๋ณด๊ธฐ
import java.io.BufferedReader
import java.io.InputStreamReader
import kotlin.math.max
import kotlin.math.min

fun main() {
    val bf = BufferedReader(InputStreamReader(System.`in`))
    val (n, k) = bf.readLine().split(" ").map { it.toInt() }
    val a = bf.readLine().split(" ").map { it.toInt() }
    var cnt: Long = 0

    for (i in 0 until n / 2) {
        val target = a.lastIndex - i

        if (a[i] != a[target]) {
            val big = max(a[i], a[target])
            val small = min(a[i], a[target])

            val cnt1 = (big - small) / k + (big - small) % k
            val divValue = (big - small) / k + 1
            val cnt2 = divValue + (k * divValue + small - big) % k

            cnt += min(cnt1, cnt2)
        }
    }

    println(cnt)
}

 

๋ฌธ์ œ ํ’€์ด

๋งค์นญ๋˜๋Š” big๊ณผ small์„ ์ •์˜ํ•˜๊ณ 

 

cnt1์€ small์—๋งŒ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•ด big๊ณผ ๋™์ผํ•œ ๊ฐ’์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ณ 

cnt2๋Š” small์— +k ์—ฐ์‚ฐ์„ ์ง„ํ–‰์‚ฌ๊ณ  big์— +1 ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ ๋ฐฉ๋ฒ•์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

divValue๋ฅผ ์ •์˜ํ•ด small์— k๋ฅผ ๋ช‡ ๋ฒˆ์„ ๋”ํ•ด์•ผ big์„ ๋„˜์–ด๊ฐ€๋Š”์ง€ ์ •์˜ํ•˜๊ณ , k * divValue์— small์„ ๋”ํ•˜๊ฒŒ ๋˜๋ฉด k๋ฅผ divValue๋ฒˆ ๋”ํ•œ small์˜ ๊ฐ’์ด ๋‚˜์˜ค๋Š”๋ฐ, big์„ ๋นผ๊ณ  ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•˜๋ฉด +1 ์—ฐ์‚ฐ์˜ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

 

๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •

cnt2๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ฒ˜์Œ์—๋Š” ์ˆ˜ํ•™ ๊ณต์‹์„ ์“ฐ์ง€ ์•Š๊ณ  while ๋ฌธ์„ ์‚ฌ์šฉํ•ด ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•ด์คฌ๋Š”๋ฐ, ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ๋‹ค.

while๋ฌธ ๋Œ€์‹ ์— ์ˆ˜ํ•™ ๊ณต์‹์„ ํ™œ์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•