Fly me to the Alpha Centauri(1011๋ฒ)
Gold 5
#์ํ
๋ฌธ์ ๋ด์ฉ
๋ฌธ์ ์ ๊ทผ
์ํ์ ์ผ๋ก ์ ๊ทผํ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
๋จผ์ ์ฅ์น๊ฐ ์๋ํ๋ ํ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฑฐ๋ฆฌ์ ์ต๋๊ฐ์ ํ์ธํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ด ํ๋ฅผ ๋ณด๋ฉด 3๊ฐ์ง์ ๊ท์น์ ํ์ธํ ์ ์๋ค.
1. ์ต๋๊ฐ์ด ์ฆ๊ฐํ๋ฉด์ 2๋ฒ์ฉ ๋ฐ๋ณต๋๋ค.
2. ๊ฑฐ๋ฆฌ๋ ์ด์ ์ ๊ฑฐ๋ฆฌ์์ ํ์ฌ์ ์ต๋๊ฐ์ ๋ํ ๊ฐ๊ณผ ๊ฐ๋ค.
3. ์ต๋๊ฐ์ด ๋ณํ๋ ์ง์ ์ ํญ์ ์ต๋๊ฐ์ ์ ๊ณฑ ๊ฐ์ด๋ค.
์ฌ์ง 1-1์ ํ๋ฅผ ์ด์ฉํด ๊ฑฐ๋ฆฌ์ ์ฌ์ด์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ค์ ๊ฐ๋ค๋ ํ๋ก ๋ํ๋ด ๋ณด์.
๋ถ๋ ๋ฌธ์ ์ ๊ฑฐ๋ฆฌ๊ฐ 8๋ถํฐ 16๊น์ง์ ๋ฐ์ดํฐ๋ค์์ ์ต๋๊ฐ๊ณผ ์ฅ์น ์๋ ํ์๋ฅผ ๊ตฌํด ๋ณด๊ฒ ๋ค.
๋ น์์ด ์ต๋๊ฐ์ด ๋ณํ๋ ๊ตฌ๊ฐ, ๋ ธ๋์์ด ์๋ ํ์๊ฐ ๋ณํ๋ ๊ตฌ๊ฐ์ด๋ค.
๋ น์์ ๊ฒฝ์ฐ๋ ์์์ ์ต๋๊ฐ์ ์ ๊ณฑ์ด ๋๋ ๊ฐ์์ ๋ณํ๋ค๊ณ ์ธ๊ธํ์ผ๋ ๋์ด๊ฐ๊ณ ,
๋ ธ๋์ ์์ ๊ฒฝ์ฐ์๋ ๋ณํ๋ ์ฃผ๊ธฐ๊ฐ ์ต๋๊ฐ์ ์๋งํผ ์๊ฐ ๋์ด๋๊ณ ๋์ ๊ฐ์ด ๋ณํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
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๊ฐ ์ ๊ณฑ์์ธ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ์ผ๋ฏ๋ก ์ ๊ณฑ์์ ์ฌ์ด์ ์๋ ์์ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํด์ผ ํ๋ค.
์์์ ์ฌ์ฉํ ์ฌ์ง์ ๋ค์ ๋ถ๋ฌ์์ ๋ด๋ณด๊ฒ ๋ค.
์ ํ์์ ๋นจ๊ฐ, ํ๋์ผ๋ก ๋ฌถ์ธ ๋ถ๋ถ์ ๊ฐ์๊ฐ ํ์ฌ ์ต๋๊ฐ๊ณผ ๊ฐ์ ๊ฒ์ ์ ์ ์๋ค.
๊ทธ๋ฌ๋ฉด ํ์ฌ ๋นจ๊ฐ์ ๋ถ๋ถ์ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ด๋ค.
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๋ก ์์ํ๋๊น ์ฒ์๊ณผ ๋์ ๊ฐ์ ํ๋์ฉ ๋๋ ค ๊ฐ๋ฉด์ ๊ฐ์ ๊ตฌํ๋ ค๊ณ ํ์ง๋ง ๊ตฌํ๊ธฐ๊ฐ ์ฝ์ง ์์๋ค.
๊ฒฐ๊ตญ ํ์ด๋ฒ์ ๊ฒ์ํด์ ๊ณต๋ถํด ๋ณด๊ณ ๋ด ๋ฐฉ์๋๋ก ๊ธ๋ก ์์ฑํด ์ฃผ์๋ค.
๋ด๊ฐ ๊ณต๋ถํ ๋ธ๋ก๊ทธ ํฌ์คํ ์ ๋งํฌ๋ก ๋จ๊ฒจ ๋๊ฒ ๋ค(๋ด๊ฐ ์ดํดํ๋ ๋ฐ ๋ง์ ๋์์ด ๋์๋ค)
[๋ฐฑ์ค] 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
'๐ฏ | ๋ฐฑ์ค > ๐ | Gold' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin, G1] ๋ฐฑ์ค 1300๋ฒ K๋ฒ์งธ ์ (0) | 2024.09.09 |
---|---|
[Kotlin, G5] ๋ฐฑ์ค 16928๋ฒ ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์ (0) | 2024.08.12 |
[Kotlin, G5] ๋ฐฑ์ค 1013๋ฒ Contact (0) | 2024.08.07 |
[Kotlin, G3] ๋ฐฑ์ค 2812๋ฒ ํฌ๊ฒ ๋ง๋ค๊ธฐ (0) | 2024.07.29 |
[Kotlin, G5] ๋ฐฑ์ค 7569๋ฒ ํ ๋งํ (0) | 2024.07.29 |