โ ๋ฌธ์
์๋์ ๊ฐ์ด ์ซ์๊ฐ ๋ด๊ธด 1์ฐจ์ ๋ฐฐ์ด์ด ์ฃผ์ด์ก์ ๋,
๋ ๊ฐ์ ์ซ์๋ฅผ ๋ฝ์ ์๋ก์ ๊ฑฐ๋ฆฌ๋ฅผ ๋น๊ตํ ํ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์์ ์ซ์์ ์์น(index)๋ฅผ ์ถ๋ ฅํ์์ค.
โ ์ฝ๋
public class Main {
public static void main(String[] args) {
int[] point = { 92, 32, 52, 9, 81, 2, 68 };
int dist = 1000000000;
int[] result = new int[2];
for (int i = 0; i < point.length - 1; i++) {
for (int j = i + 1; j < point.length; j++) {
if (dist > Math.abs(point[i] - point[j])) {
dist = Math.abs(point[i] - point[j]);
result[0] = i;
result[1] = j;
}
}
}
System.out.println("result = [" + result[0] + ", " + result[1] + "]");
}
}
โ ์ถ๋ก ๊ณผ์
์ด ํ๋ก๊ทธ๋จ์ ํฌ์ธํธ ๋ฐฐ์ด์์ ๋ ์ธ๋ฑ์ค ์์ ์ฐพ์ ๊ทธ ์ฐจ์ด๊ฐ ์ต์๊ฐ ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
- ๋ช ๊ฐ์ง ์ ์ ๊ฐ์ผ๋ก point ๋ฐฐ์ด์ ์ด๊ธฐํํ๋ค.
- ์ต์ ์ฐจ์ด๋ฅผ ์ ์ฅํ ๋ณ์ dist๋ฅผ ๋งค์ฐ ํฐ ๊ฐ์ผ๋ก ์ด๊ธฐํํ๋ค.
- ํฌ๊ธฐ๊ฐ 2์ธ result ๋ฐฐ์ด์ ์ด๊ธฐํํ์ฌ ์ต์ ์ฐจ์ด๋ฅผ ๊ฐ์ง ์ธ๋ฑ์ค ์์ ์ ์ฅํ๋ค.
- ์ด์ค for๋ฌธ์ผ๋ก point ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ๋ฐ๋ณตํ๋ค.
- ๊ฐ ์์ ์์ ๋ํด ์ ๋ ์ฐจ์ด๋ฅผ ๊ณ์ฐํ๊ณ , ๊ทธ ์ฐจ์ด๊ฐ dist๋ณด๋ค ์์ผ๋ฉด dist ๋ณ์๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
- result ๋ฐฐ์ด์ ๋ด๊ธด ์์๋ค์ ์ถ๋ ฅํ๋ค.
์ฌ๊ธฐ์ dist๋ฅผ ๋งค์ฐ ํฐ ๊ฐ์ผ๋ก ์ด๊ธฐํํ๋ ์ด์ ๋ ์ค์ ๋ก ๋ฐ์ํ ์ ์๋ ์ต๋ ๊ฐ๋ฅํ ์ฐจ์ด๋ณด๋ค ํฐ ๊ฐ์ผ๋ก ์์ํ๋ฉด์, ์ดํ์ ์ฐจ์ด๋ฅผ ์ฐพ์ ๋ ํด๋น ๊ฐ๊ณผ ๋น๊ตํ์ฌ ์ต์ ์ฐจ์ด๋ฅผ ๊ฐฑ์ ํ๋ ค๊ณ ํ๊ธฐ ์ํจ์ด๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ์ฐจ์ด๋ฅผ ๊ฐฑ์ ํ๋ ๊ณผ์ ์์ ์ ํํ ์์์ ํฐ ๊ฐ์ด ์ฒ์์ ์ค์ ํ dist๋ณด๋ค ์์ ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ๋์ด ์ต์ ์ฐจ์ด๋ฅผ ๋ํ๋ด๊ฒ ๋๋ค.
์๋๋ ๊ฒฐ๊ณผ๋ฅผ ๋ด์์ค ๋ฐฐ์ด์ ์ ์ธํ์ง ์๊ณ ๋ณ์ a,b ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ด์์ค ๊ฒ์ด๋ค.
์กฐ๊ธ ๋ ๊ฐ๋จํ ์ฝ๋์ด๋ค.
public class Main {
public static void main(String[] args) {
int[] point = { 92, 32, 52, 9, 81, 2, 68 };
int min = Math.abs(point[0]-point[1]);
int a = 0;
int b = 0;
for (int j = 0; j < point.length; j++) {
for (int i = 0; i < point.length; i++) {
if (j != i) {
if(Math.abs(point[j] - point[i]) < min) {
min = Math.abs(point[j] - point[i]);
a = j;
b = i;
}
}
}
}
System.out.println("result = [" + a + ", " + b + "]");
}
}