narr[i]가 int형이 표현가능한 최대값(2^31-1)일 수도 있는데, temp * temp에서 오버플로우가 발생해서 비교 연산이 제대로 진행되지 않을 것 같습니다. long으로 바꾸어보세요.
1011번 - Fly me to the Alpha Centauri
narr[i]가 int형이 표현가능한 최대값(2^31-1)일 수도 있는데, temp * temp에서 오버플로우가 발생해서 비교 연산이 제대로 진행되지 않을 것 같습니다. long으로 바꾸어보세요.
narr만 바꾸면 안 됩니다. temp 등 오버플로우가 날 수 있는 연산과 관련되어 있는 모든 변수의 타입을 long으로 바꾸셔야 합니다.
evenharder님 너무 감사합니다 Long으로 바꾸니 시간초과가 안나네요ㄷㄷ 잘못된 타입이면 타입에러가 날 줄 알았는데 올바른 비교연산을 실패해서 시간초과가 날 줄은 몰랐습니다.
fun main() = <i>with</i>(System.<i>`in`</i>.<i>bufferedReader</i>()) <b>{ </b> val sb = StringBuilder() <i>repeat</i>(readLine().<i>toInt</i>()) <b>{ </b> val (x, y) = readLine().<i>split</i>(' ').<i>map </i><b>{ it</b>.<i>toLong</i>() <b>} </b> var cnt = 0L var d : Long = y - x while(true) { if(cnt % 2 == 0L){ val n : Long = cnt / 2 if( d <= n*(n+1)) break } else { val n : Long = cnt / 2 + 1 if( d <= n*(n+1)/2 + (n-1)*n/2) break } cnt += 1 } sb.<i>appendLine</i>(cnt) <b>} </b> <i>print</i>(sb) <b>}</b>
댓글을 작성하려면 로그인해야 합니다.
kim03208 5년 전
시간초과라는데.... 여기서 어떻게 고쳐야할지 막막합니다.