Jin's Library

[Gold Ⅴ] 1011 - Fly me to the Alpha Centauri 본문

Algorithm - Java/BOJ - Gold

[Gold Ⅴ] 1011 - Fly me to the Alpha Centauri

Linkin 2025. 9. 26. 16:52
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ_1011 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int N = Integer.parseInt(br.readLine());

        for(int i=0;i<N;i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            int StartPoint = Integer.parseInt(st.nextToken());
            int EndPoint   = Integer.parseInt(st.nextToken());
            int distance = EndPoint - StartPoint;
            int speed = (int)Math.sqrt(distance);
           
            if (speed * speed == distance) {
                sb.append(2 * speed - 1).append("\n");
            } else if (distance <= speed * speed + speed) {
                sb.append(2 * speed).append("\n");
            } else {
                sb.append(2 * speed + 1).append("\n");
            }
        }
        System.out.println(sb);
    }
}

// #1 시간초과 
// public class BOJ_1011 {
//     public static void main(String[] args) throws Exception{
//         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//         StringBuilder sb = new StringBuilder();
//         int N = Integer.parseInt(br.readLine());
//         for(int i=0;i<N;i++){
//             StringTokenizer st = new StringTokenizer(br.readLine());
//             int StartPoint = Integer.parseInt(st.nextToken());
//             int EndPoint   = Integer.parseInt(st.nextToken());
//             int speed      = 1;
//             int warpCount  = 1;
//             StartPoint++;        
//             while(StartPoint != EndPoint){
//                 int acc = 0;
//                 int distance = EndPoint - StartPoint;
//                 warpCount++;
//                 for(int j=1;j<=speed;j++) acc += j;
//                 if(distance >= acc){
//                     acc += speed+1;
//                     if(distance >= acc){        // 가속
//                         StartPoint += ++speed;  
//                     }else{                      // 등속
//                         StartPoint += speed;
//                     }
//                 }else{                          // 감속
//                     StartPoint += --speed;      
//                 }
//             }
//             sb.append(warpCount).append("\n");
//         }
//         System.out.println(sb);
//     }
// }
//
// 01 : 1
// 02 : 1 1
// 03 : 1 1 1
// 04 : 1 2 1
// 05 : 1 2 1 1
// 06 : 1 2 2 1
// 07 : 1 2 2 1 1
// 08 : 1 2 2 2 1
// 09 : 1 2 3 2 1
// 10 : 1 2 3 2 1 1
// 11 : 1 2 3 2 2 1
// 12 : 1 2 3 3 2 1
// 13 : 1 2 3 3 2 1 1
// 14 : 1 2 3 3 2 2 1
// 15 : 1 2 3 3 3 2 1
// 16 : 1 2 3 4 3 2 1
// 17 : 1 2 3 4 3 2 1 1

'Algorithm - Java > BOJ - Gold' 카테고리의 다른 글

[Gold Ⅳ] 9935 - 문자열 폭발  (0) 2025.09.29
[Gold Ⅴ] 7576 - 토마토  (0) 2025.09.29
[Gold Ⅴ] 7569 - 토마토  (0) 2025.09.29
[Gold Ⅴ] 5430 - AC  (0) 2025.09.29
[Gold Ⅳ] 5427 - 불  (0) 2025.09.29