JAVA/풀어봅시다 (eclipse)
[JAVA] 배열에서 가장 거리가 짧은 것의 쌍 출력하기
샛별KIM
2021. 5. 26. 14:41
1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수를 작성하시오. (단 점들의 배열은 모두 정렬되어있다고 가정한다.) ex. S={1, 3, 4, 8, 13, 17, 20}일 때 출력은 3 : 4, 1
package may28;
import java.util.Arrays;
public class Daum {
public static void main(String[] args) {
// int[] s = { 1, 3, 4, 8, 13, 17, 20 };
int[] s = new int[7];
for (int i = 0; i < s.length; i++) {
s[i] = (int) (Math.random() * 20 + 1);
}
Arrays.sort(s);
System.out.println(Arrays.toString(s));
int cnt = s[1] - s[0];// 각 거리차이를 저장할 변수
int fir = 0, sec = 0;// 짧은 거리의 첫번째 수, 두번째 수 저장할 변수
for (int i = 0; i < s.length - 1; i++) {
if (cnt > s[i + 1] - s[i] || cnt == s[i + 1] - s[i]) {
fir = s[i];
sec = s[i + 1];
cnt = s[i + 1] - s[i];
}
}
System.out.println(fir + " : " + sec + ", " + cnt);
}
}
//////출력
3 : 4, 1