메모
/* 이전 작동시기에 k광년을 이동하였을 때는 k-1 , k 혹은 k+1 광년만을 다시 이동할 수 있다.
처음 작동시킬 경우 -1 , 0 , 1 -> 음수 혹은 0 거리만큼의 이동은 의미가 없으므로 1 광년을 이동
그 다음에는 0 , 1 , 2 광년을 이동
다음 시기엔 1, 2, 3 광년을 이동
y지점에 도착하기 바로 직전의 이동거리는 반드시 1광년으로
x지점부터 정확히 y지점으로 이동하는데 필요한 공간 이동 장치 작동 횟수의 최솟값? */
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T = in.nextInt(); // 테스트 케이스
for (int i = 0; i < T; i++) {
int X = in.nextInt();
int Y = in.nextInt();
int distance = Y - X; // X지점 ~ Y지점 사이의 거리
int max = (int)Math.sqrt(distance); // 이동 거리 최댓값
if (max == Math.sqrt(distance)) { // 조건 1
System.out.println(max * 2 - 1);
} else if (distance <= max * max + max) { // 조건 2
System.out.println(max * 2);
} else { // 조건 3 : count 세기
System.out.println(max * 2 + 1);
}
}
}
}
count 를 구하는 문제
변수
int max = (int)Math.sqrt(distance) 로 소수점을 버린다.
distance <= max * max + max
참고: [백준] 1011번 : Fly me to the Alpha Centauri - JAVA [자바]