import java.io.*
import java.util.*
import kotlin.math.round
import kotlin.math.sqrt

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))

    //테스트케이스
    val testCase = br.readLine().toInt()

    for ( i in 1..testCase ) {
        //X값과 Y값 구분
        val xy = StringTokenizer(br.readLine())
        val x = xy.nextToken().toInt()
        val y = xy.nextToken().toInt()
        //X값과 Y값을 뺀 값
        val yMinusX = y - x
        //yMinusX의 제곱근
        var zeGop = sqrt(yMinusX.toDouble())
        //yMinusX 제곱근을 반올림한 값
        var roundUp = round(zeGop)
        //y-x가 3이하면 그냥 출력
        //y-x가 4 이상부터는 제곱근이 제곱근의 반올림값보다 크면 제곱근 * 2
        //y-x가 4 이상부터는 제곱근이 제곱근의 반올림값보다 작으면 제곱근 * 2 - 1
        when {
            yMinusX <= 3 -> bw.write("$yMinusX\n")
            zeGop > roundUp -> bw.write("${roundUp.toInt() * 2}\n")
            zeGop <= roundUp -> bw.write("${roundUp.toInt() * 2 - 1}\n")
        }
        bw.flush()
    }
    bw.close()
}

단계9(수학1) 마지막문제 1011번이에요

일단 문제이해하는데에도 굉장히 오래걸렸어요

처음에 볼때는 그냥 Y 와 X를 뺀 값에서 반정도 날아가면 되지 않나 생각했는데

도착전에는 이동거리가 1이어야 하기 때문에 이 때문에 꼬인...

그냥 차근차근 표를 만들어서 보니 규칙이 나왔어요

또 제곱근에 힌트가 있다는 것도 접하고... 다음은 얼마나 어려울지 흑

반응형

+ Recent posts