본문 바로가기
알고리즘/백준

백준 1011번 Fly me to the Alpha Centauri 자바 java

by 클로드 2021. 4. 14.
반응형

문제

 

풀이

 

거리의 개수, 최댓값 (이동한 거리의 값들 중 최댓값)이 2번 나타나며 1씩 증가하는 규칙을 보인다

거리의 범위에서 최대값의 제곱을 하면 해당 범위의 첫 번째를 나타내게 된다

최댓값 6 → 36 = (31 ~ 36), (37 ~ 42)

최댓값 7 → 49 = (43 ~ 49), (50 ~ 56)

최댓값은 거리의 제곱근의 반올림을 하면 구할 수 있다

작동 횟수는

거리 > 최댓값 제곱 이면 최댓값 * 2

거리 ≤ 최대값 제곱 이면 최대값 * 2 - 1

 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();

        for (int i = 0; i < T; i++) {
            double x = sc.nextDouble();
            double y = sc.nextDouble();

            System.out.println(countWarp(x, y));
        }

    }

    public static int countWarp(double x, double y) {
        double distance = y - x;
        double max = Math.round(Math.sqrt(distance));

        if (distance > Math.pow(max, 2)) {
            return (int)max * 2;
        } else {
            return (int)max * 2 - 1;
        }
    }
}

 

출처

www.acmicpc.net/problem/1011

반응형

댓글