반응형
문제
풀이
거리의 개수, 최댓값 (이동한 거리의 값들 중 최댓값)이 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;
}
}
}
출처
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 18870번 좌표 압축 자바 java (0) | 2021.04.20 |
---|---|
백준 1157번 단어 공부 자바 java (0) | 2021.04.15 |
백준 2869번 달팽이는 올라가고 싶다 자바 java (0) | 2021.04.13 |
백준 1065번 한수 자바 java (0) | 2021.04.12 |
백준 4673번 셀프 넘버 자바 java (0) | 2021.04.11 |
댓글