Java
[백준 2485] 가로수 (JAVA)
iheeeee6-6
2023. 3. 23. 23:45
728x90
https://www.acmicpc.net/problem/2485
2485번: 가로수
첫째 줄에는 이미 심어져 있는 가로수의 수를 나타내는 하나의 정수 N이 주어진다(3 ≤ N ≤ 100,000). 둘째 줄부터 N개의 줄에는 각 줄마다 심어져 있는 가로수의 위치가 양의 정수로 주어지며, 가
www.acmicpc.net
1) 각 간격의 최대공약수를 찾는다!
2) 총 거리에서 최대공약수로 계산했을때 총 몇개의 가로수가 들어가는지 계산하고
현재 있는 가로수의 수를 뺀다
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
ArrayList<Integer> arr = new ArrayList<>();
ArrayList<Integer> map = new ArrayList<>();
int num1 = Integer.parseInt(br.readLine());
map.add(num1);
for (int i = 0; i < n - 1; i++) {
int num2 = Integer.parseInt(br.readLine());
arr.add(num2 - num1);
map.add(num2);
num1 = num2;
}
int max = arr.get(0);
int dis1 = arr.get(0);
for (int i = 1; i < arr.size(); i++) {
int dis2 = arr.get(i);
for (int j = 1; j <= dis1; j++) {
if (dis1 % j == 0 && dis2 % j == 0) {
max = j;
}
}
dis1 = max;
}
System.out.println((map.get(n-1)-map.get(0))/max-(n-1));
}
}