๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ฏ | ๋ฐฑ์ค€/๐Ÿ˜€ | Bronze

[Kotlin, B1] ๋ฐฑ์ค€ 10275๋ฒˆ ๊ณจ๋“œ ๋Ÿฌ์‹œ

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

์ถœ์ฒ˜: unsplash.com

 

๊ณจ๋“œ ๋Ÿฌ์‹œ(10275๋ฒˆ)

Bronze 1

#์ˆ˜ํ•™ #๊ตฌํ˜„

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

 

๋ฌธ์ œ ๋‚ด์šฉ

 

 

๋ฌธ์ œ ์ ‘๊ทผ

a, b ์ค‘์— ํ•˜๋‚˜๋ฅผ 2์˜ ์ œ๊ณฑ์ˆ˜๋งŒ์„ ์ด์šฉํ•ด ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 24๋Š” 16 + 8๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋•Œ ์ฐจ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด 2์˜ n์ œ๊ณฑํ•œ ์ˆ˜์—์„œ ๋ช‡ ๋ฒˆ์„ ๋ฐ˜์œผ๋กœ ์ž˜๋ผ์•ผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

a, b์— ์ •ํ™•ํžˆ ์š”๊ตฌ๋œ ์ˆ˜๋งŒํผ๋งŒ ๋“ค์–ด๊ฐ€์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ๊ณผ a + b๊ฐ€ 2์˜ n์ œ๊ณฑ๊ณผ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— a์™€ b ์ค‘ ํ•˜๋‚˜๋งŒ ๊ตฌํ•ด๋„ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ƒ๊ฐํ•˜๊ฒŒ ๋˜๋ฉด ํ•˜๋‚˜๋งŒ ๊ตฌํ•ด๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

 

 

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

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

fun main() {
    val bf = BufferedReader(InputStreamReader(System.`in`))
    val t = bf.readLine().toInt()
    val answer = StringBuilder()

    for (i in 0 until t) {
        val (n, a, b) = bf.readLine().split(" ").map { it.toLong() }
        var gold: Long = 1
        for (j in 0 until n) {
            gold *= 2
        }

        if (a % 2 == 1L) {
            answer.append("$n\n")
            continue
        } else {
            var target = min(a, b)
            var cut = 0

            while (target != 0L) {
                if (gold > target) {
                    gold /= 2
                    cut++
                } else {
                    target -= gold
                }
            }

            answer.append("$cut\n")
        }
    }

    println(answer)
}

 

๋ฌธ์ œ ํ’€์ด

a, b ์ค‘ ๋” ์ž‘์€ ๊ฐ’์„ ๊ตฌํ•ด์„œ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค.

n์˜ ์ตœ๋Œ“๊ฐ’์ด 62์ด๊ธฐ ๋•Œ๋ฌธ์— int ๋ฒ”์œ„๋ฅผ ๋„˜๋Š”๋‹ค. ๋‹น์—ฐํžˆ a, b๋„ int ๋ฒ”์œ„๋ฅผ ๋„˜์„ ์ˆ˜ ์žˆ๋‹ค.

long์œผ๋กœ ๊ฐ’์„ ๋ฐ›์•„์ค€๋‹ค.

 

gold์˜ ๊ฐ’์€ pow ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ตฌํ•ด์ค„ ์ˆ˜๋Š” ์žˆ๊ฒ ์ง€๋งŒ, ์†Œ์ˆ˜์  ์˜ค์ฐจ๊ฐ€ ๋‚  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ๋ฐ˜๋ณตํ•ด์„œ ๊ตฌํ•ด์ค€๋‹ค.

 

a, b๊ฐ€ ํ™€์ˆ˜๊ฐ€ ๋“ค์–ด์˜ค๊ฒŒ ๋œ๋‹ค๋ฉด 1์ด ํ•„์š”ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์กฐ๊ฑด n๋ฒˆ ์ž˜๋ผ์ค˜์•ผ ํ•œ๋‹ค.

if๋กœ ๊ฑธ๋Ÿฌ์ค€ ๋‹ค์Œ ์ง์ˆ˜์ธ ๊ฒฝ์šฐ๋งŒ ํ™•์ธ์„ ํ•˜๋ฉด ๋œ๋‹ค.

 

target์„ ๋งŒ๋“ค์–ด์„œ a, b ์ค‘ ๋” ์ž‘์€ ๊ฐ’์œผ๋กœ ์ €์žฅํ•˜๊ณ , 0์ด ๋  ๋•Œ๊นŒ์ง€ ์ž˜๋ผ ์ฃผ๊ฒ ๋‹ค.

target๋ณด๋‹ค gold๊ฐ€ ๋” ํฌ๋‹ค๋ฉด gold๋ฅผ ์ •ํ™•ํžˆ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ ์ฃผ๊ณ  cutting ์นด์šดํŠธ๋ฅผ ์„ธ์ค€๋‹ค.

target์ด gold๋ณด๋‹ค ๋” ํฐ ๊ฒฝ์šฐ์—๋Š” target์—์„œ gold๋ฅผ ๋นผ์ค€๋‹ค.

 

 

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

์ •ํ™•ํžˆ ๊ฐ€๋ฐฉ์— ์ง‘์–ด๋„ฃ์–ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ชจ๋ฅด๊ณ  ๋ฌธ์ œ๋ฅผ ๋ณด๊ฒŒ ๋˜๋ฉด ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.

์ฒ˜์Œ์—๋Š” case 10 1000 24๋ฅผ ๋ณด๊ณ  24๋ณด๋‹ค ์ž‘์€ ์ œ๊ณฑ์ˆ˜๊ฐ€ 16์ด๊ธฐ ๋•Œ๋ฌธ์— 10 - 4 = 6์ด๋ผ๋Š” ๊ฒฐ๋ก ์„ ๋„์ถœํ–ˆ๋Š”๋ฐ ๋‹น์—ฐํžˆ ํ‹€๋ฆฐ ์ ‘๊ทผ์ด๋‹ค.

๋˜ํ•œ ํ™€์ˆ˜์ธ ๊ฒฝ์šฐ์—๋Š” ๋ฌด์กฐ๊ฑด 1์ด ํ•„์š”ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— n๋ฒˆ์˜ cutting์ด ํ•„์š”ํ•ด์ง„๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜๋ฉด ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•