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

[Kotlin, G5] ๋ฐฑ์ค€ 1011๋ฒˆ Fly me to the Alpha Centauri

by immgga 2024. 7. 30.
๋ฐ˜์‘ํ˜•

์ถœ์ฒ˜: unsplash.com

 

Fly me to the Alpha Centauri(1011๋ฒˆ)

Gold 5

#์ˆ˜ํ•™

 

๋ฌธ์ œ ๋‚ด์šฉ

 

๋ฌธ์ œ ์ ‘๊ทผ

์ˆ˜ํ•™์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋จผ์ € ์žฅ์น˜๊ฐ€ ์ž‘๋™ํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฑฐ๋ฆฌ์™€ ์ตœ๋Œ“๊ฐ’์„ ํ™•์ธํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์‚ฌ์ง„ 1-1

์ด ํ‘œ๋ฅผ ๋ณด๋ฉด 3๊ฐ€์ง€์˜ ๊ทœ์น™์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ์ตœ๋Œ“๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๋ฉด์„œ 2๋ฒˆ์”ฉ ๋ฐ˜๋ณต๋œ๋‹ค.

2. ๊ฑฐ๋ฆฌ๋Š” ์ด์ „์˜ ๊ฑฐ๋ฆฌ์—์„œ ํ˜„์žฌ์˜ ์ตœ๋Œ“๊ฐ’์„ ๋”ํ•œ ๊ฐ’๊ณผ ๊ฐ™๋‹ค.

3. ์ตœ๋Œ“๊ฐ’์ด ๋ณ€ํ•˜๋Š” ์ง€์ ์€ ํ•ญ์ƒ ์ตœ๋Œ“๊ฐ’์˜ ์ œ๊ณฑ ๊ฐ’์ด๋‹ค.

 

์‚ฌ์ง„ 1-1์˜ ํ‘œ๋ฅผ ์ด์šฉํ•ด ๊ฑฐ๋ฆฌ์˜ ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ๊ฐ’๋“ค๋„ ํ‘œ๋กœ ๋‚˜ํƒ€๋‚ด ๋ณด์ž.

๋ถ„๋Ÿ‰ ๋ฌธ์ œ์ƒ ๊ฑฐ๋ฆฌ๊ฐ€ 8๋ถ€ํ„ฐ 16๊นŒ์ง€์˜ ๋ฐ์ดํ„ฐ๋“ค์—์„œ ์ตœ๋Œ“๊ฐ’๊ณผ ์žฅ์น˜ ์ž‘๋™ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•ด ๋ณด๊ฒ ๋‹ค.

์‚ฌ์ง„ 1-2

๋…น์ƒ‰์ด ์ตœ๋Œ“๊ฐ’์ด ๋ณ€ํ•˜๋Š” ๊ตฌ๊ฐ„, ๋…ธ๋ž€์ƒ‰์ด ์ž‘๋™ ํšŸ์ˆ˜๊ฐ€ ๋ณ€ํ•˜๋Š” ๊ตฌ๊ฐ„์ด๋‹ค.

๋…น์ƒ‰์˜ ๊ฒฝ์šฐ๋Š” ์œ„์—์„œ ์ตœ๋Œ“๊ฐ’์˜ ์ œ๊ณฑ์ด ๋˜๋Š” ๊ฐ’์—์„œ ๋ณ€ํ•œ๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์œผ๋‹ˆ ๋„˜์–ด๊ฐ€๊ณ ,

๋…ธ๋ž€์ƒ‰ ์ˆ˜์˜ ๊ฒฝ์šฐ์—๋Š” ๋ณ€ํ•˜๋Š” ์ฃผ๊ธฐ๊ฐ€ ์ตœ๋Œ“๊ฐ’์˜ ์ˆ˜๋งŒํผ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ  ๋‚˜์„œ ๊ฐ’์ด ๋ณ€ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

9๋ถ€ํ„ฐ 16 ์‚ฌ์ด์— ์žˆ๋Š” 6๊ฐœ์˜ ์ˆ˜์—์„œ ์ตœ๋Œ“๊ฐ’์ธ 3์”ฉ ์žฅ์น˜ ์ž‘๋™ ํšŸ์ˆ˜๊ฐ€ ์œ ์ง€๋˜๋‹ค๊ฐ€ ์ตœ๋Œ“๊ฐ’์ด ๋Š˜์–ด๋‚œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ๋„ ๋˜‘๊ฐ™์€ ๊ทœ์น™์ด ์ ์šฉ๋œ๋‹ค.

 

์ •๋ฆฌํ•ด ๋ณด๋ฉด

1. ์ตœ๋Œ“๊ฐ’์€ ๊ฑฐ๋ฆฌ์—์„œ ๋ฃจํŠธ๋ฅผ ์”Œ์šด ๊ฐ’์—์„œ ์†Œ์ˆ˜์ ์„ ๋ฒ„๋ฆฐ ๊ฐ’๊ณผ ๊ฐ™๋‹ค.

2. ์ตœ๋Œ“๊ฐ’์ด ๋ณ€ํ•˜๋Š” ์ง€์  ์‚ฌ์ด์—์„œ๋Š” ์žฅ์น˜ ์ž‘๋™ ํšŸ์ˆ˜์˜ ๋ณ€๊ฒฝ์ด ๋ฌด์กฐ๊ฑด 2๋ฒˆ ์ด๋ฃจ์–ด์ง„๋‹ค.

3. ๋…น์ƒ‰ ์นธ ๋‹ค์Œ์—๋Š” ๋ฐ˜๋“œ์‹œ ์ž‘๋™ ํšŸ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค(๋…น์ƒ‰ ์นธ์— ํ•ด๋‹น๋˜๋Š” ์ˆ˜์ธ 9๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด ๋ฌธ์ œ์˜ ๊ทœ์น™์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์˜ ๊ฒฝ์šฐ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค).

4. ๋‘ ๋ฒˆ์งธ ์žฅ์น˜ ์ž‘๋™ ํšŸ์ˆ˜๊ฐ€ ๋ณ€ํ•˜๋Š” ์‹œ์ ์€ ์ฒซ ๋ฒˆ์งธ๋กœ ์žฅ์น˜ ์ž‘๋™ ํšŸ์ˆ˜๊ฐ€ ๋ณ€ํ•œ ์‹œ์ ์—์„œ ์ตœ๋Œ“๊ฐ’๋งŒํผ ๋”ํ•œ ๊ฒฝ์šฐ์ด๋‹ค.

 

์œ„ ๊ทœ์น™๋“ค์„ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋ณด์ž.

 

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

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

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val case = readLine().toInt()

    for (i in 0 until case) {
        val (start, end) = readLine().split(" ").map { it.toInt() }
        val distance = end - start
        val max = sqrt(distance.toDouble()).toInt()

        if (max.toDouble() == sqrt(distance.toDouble())) println(max * 2 - 1)
        else if (distance in max * max + 1 .. (max * max) + max) println(max * 2)
        else println(max * 2 + 1)
    }
}

 

๋ฌธ์ œ ํ’€์ด

์‹œ์ž‘์ (start)๊ณผ ์ข…๋ฃŒ ์ง€์ (end)์˜ ๊ฑฐ๋ฆฌ ์ฐจ๋ฅผ distance๋กœ ๊ตฌํ•œ๋‹ค.

๊ทธ๋‹ค์Œ distance์˜ ์ตœ๋Œ“๊ฐ’์„ ๋ฃจํŠธ(sqrt)๋ฅผ ์”Œ์šฐ๊ณ  ์†Œ์ˆ˜์ ์„ ๋ฒ„๋ ค์„œ ๊ตฌํ•ด ์ค€๋‹ค.

 

<์ฒซ ๋ฒˆ์งธ ์กฐ๊ฑด>

if (max.toDouble() == sqrt(distance.toDouble())) println(max * 2 - 1)

์šฐ์„  ์ฒซ ๋ฒˆ์งธ ์กฐ๊ฑด์œผ๋กœ๋Š” distance๊ฐ€ ์ œ๊ณฑ์ˆ˜์ธ์ง€ ํ™•์ธํ•ด์ค˜์•ผ ํ•œ๋‹ค.

max๋ฅผ double๋กœ ๋ณ€ํ™˜ํ•œ ๊ฐ’์ด ํ˜„์žฌ distance์˜ ๋ฃจํŠธ์—์„œ ์†Œ์ˆ˜์ ์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š์€ ๊ฐ’๊ณผ ๊ฐ™์€์ง€ ํ™•์ธํ•œ๋‹ค.

์ œ๊ณฑ์ˆ˜์ธ ๊ฒฝ์šฐ์ธ 9๋ฅผ ์˜ˆ๋กœ ์„ค๋ช…ํ•˜์ž๋ฉด

๊ธฐ์กด์— ๋ฃจํŠธ๋ฅผ ์”Œ์›Œ ๊ตฌํ•œ max(3)์— ํ˜„์žฌ distance์˜ ๋ฃจํŠธ๋ฅผ ์”Œ์šด ๊ฐ’( √distance = 3.0)์ด ์„œ๋กœ ๊ฐ™๋‹ค.

์ฒซ ๋ฒˆ์งธ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด ๋ฌธ์ œ ์ ‘๊ทผ์˜ 1๋ฒˆ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฏ€๋กœ ์žฅ์น˜ ์ž‘๋™ ํšŸ์ˆ˜๋Š” max * 2 - 1๊ฐ€ ๋œ๋‹ค.

 

<๋‘ ๋ฒˆ์งธ ์กฐ๊ฑด>

์ฒซ ๋ฒˆ์งธ ์กฐ๊ฑด์œผ๋กœ distance๊ฐ€ ์ œ๊ณฑ์ˆ˜์ธ ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ–ˆ์œผ๋ฏ€๋กœ ์ œ๊ณฑ์ˆ˜์˜ ์‚ฌ์ด์— ์žˆ๋Š” ์ˆ˜์˜ ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

์œ„์—์„œ ์‚ฌ์šฉํ•œ ์‚ฌ์ง„์„ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์™€์„œ ๋ด๋ณด๊ฒ ๋‹ค.

์‚ฌ์ง„ 1-3

์œ„ ํ‘œ์—์„œ ๋นจ๊ฐ•, ํŒŒ๋ž‘์œผ๋กœ ๋ฌถ์ธ ๋ถ€๋ถ„์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ˜„์žฌ ์ตœ๋Œ“๊ฐ’๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ํ˜„์žฌ ๋นจ๊ฐ„์ƒ‰ ๋ถ€๋ถ„์˜ ์กฐ๊ฑด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.

max^2 < distance <= max^2 + max

์œ„ ์กฐ๊ฑด์„ Kotlin์œผ๋กœ ๋ณ€ํ˜•ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

else if (distance in max * max + 1 .. (max * max) + max) println(max * 2)

๊ทธ๋Ÿฌ๋ฉด ์ž‘๋™ ํšŸ์ˆ˜๋Š” max * 2๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

 

<์„ธ ๋ฒˆ์งธ ์กฐ๊ฑด>

์ฒซ ๋ฒˆ์งธ, ๋‘ ๋ฒˆ์งธ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ๋‚˜๋จธ์ง€ distance์ธ ๊ฒฝ์šฐ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค(์‚ฌ์ง„ 1-3์˜ ํŒŒ๋ž‘์œผ๋กœ ๋ฌถ์ธ ๋ถ€๋ถ„).

(์‚ฌ์ง„ 1-3์˜ ํ‘œ์—์„œ 13~15์— ํ•ด๋‹น)

์ž‘๋™ ํšŸ์ˆ˜๋Š” max * 2 + 1์ด ๋œ๋‹ค.

else println(max * 2 + 1)

 

์ด๋ ‡๊ฒŒ 3๊ฐ€์ง€์˜ ์กฐ๊ฑด๋งŒ ํ™•์ธํ•˜๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์“ฐ์ง€ ์•Š์•„๋„ ๋ชจ๋“  distance์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•ด์„œ ์ •ํ™•ํ•œ ๊ฑฐ๋ฆฌ๋ฅผ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

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

์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ์ ‘ํ•˜๊ณ  ํ’€์—ˆ์„ ๋•Œ๋Š” ์™„์ „ํžˆ ์ž˜๋ชป ์ ‘๊ทผํ•ด์„œ ํ’€์–ด์„œ ์ •๋‹ต์ด ์ œ๋Œ€๋กœ ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค.

์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด ์ฒ˜์Œ๊ณผ ๋์€ ๋ฌด์กฐ๊ฑด 1๋กœ ์‹œ์ž‘ํ•˜๋‹ˆ๊นŒ ์ฒ˜์Œ๊ณผ ๋์˜ ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๋Š˜๋ ค ๊ฐ€๋ฉด์„œ ๊ฐ’์„ ๊ตฌํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ๊ตฌํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์•˜๋‹ค.

๊ฒฐ๊ตญ ํ’€์ด๋ฒ•์„ ๊ฒ€์ƒ‰ํ•ด์„œ ๊ณต๋ถ€ํ•ด ๋ณด๊ณ  ๋‚ด ๋ฐฉ์‹๋Œ€๋กœ ๊ธ€๋กœ ์ž‘์„ฑํ•ด ์ฃผ์—ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ณต๋ถ€ํ•œ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์„ ๋งํฌ๋กœ ๋‚จ๊ฒจ ๋†“๊ฒ ๋‹ค(๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ๋‹ค)

https://st-lab.tistory.com/79

 

[๋ฐฑ์ค€] 1011๋ฒˆ : Fly me to the Alpha Centauri - JAVA [์ž๋ฐ”]

https://www.acmicpc.net/problem/1011 1011๋ฒˆ: Fly me to the Alpha Centauri ์šฐํ˜„์ด๋Š” ์–ด๋ฆฐ ์‹œ์ ˆ, ์ง€๊ตฌ ์™ธ์˜ ๋‹ค๋ฅธ ํ–‰์„ฑ์—์„œ๋„ ์ธ๋ฅ˜๋“ค์ด ์‚ด์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ž˜๊ฐ€ ์˜ค๋ฆฌ๋ผ ๋ฏฟ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฐ€ ์ง€๊ตฌ๋ผ๋Š” ์„ธ์ƒ์— ๋ฐœ์„ ๋‚ด

st-lab.tistory.com

728x90
๋ฐ˜์‘ํ˜•