λ¬Έμ
νμ΄
1οΈβ£ μ‘°ν©μ μ΄μ©ν νμ΄
μ£Όμ΄μ§ λλ©μ΄ μ€ 2κ°λ‘ λ§λ€ μ μλ λμ¬λμ λμ΄λ₯Ό λͺ¨λ ꡬνλ€.
λ¨, λ μ¬λμ΄ κ°μ λλ©μ΄λ₯Ό μ¬μ©ν μ μλ€. μλ‘ λ€λ₯Έ λλ©μ΄ 4κ°κ° μ¬μ©λμ΄μΌ νλ€.
λ°λΌμ, κ·Έλ₯ ν©μ μ‘°ν©λ§ ꡬνλ©΄ μ΄λ¬ν λΆλΆμ 체ν¬ν μ μκΈ° λλ¬Έμ μ΄λ€ μΈλ±μ€μ λλ©μ΄λ‘ λμ¬λμ λ§λ κ±΄μ§ μ λ³΄κ° νμνλ€.
λ°λΌμ, ν΄λμ€λ₯Ό μλ‘κ² νλ μ μν΄μΌνλ€.
static class SnowMan{
int idx1;
int idx2;
int height;
public SnowMan(int idx1, int idx2, int height) {
this.idx1 = idx1;
this.idx2 = idx2;
this.height = height;
}
}
μμ κ°μ SnowMan
ν΄λμ€λ₯Ό μ μνλ€.
μ΄λ€ μΈλ±μ€μ λλ©μ΄λ₯Ό μ¬μ©ν΄μ λ§λ€μλμ§, μ΄ λμ΄λ μΌλ§μΈμ§λ₯Ό 보κ΄ν μ μλ€.
μ΄μ , λμ¬λ μ‘°ν©μ List μ λ£κ³ λμ¬λ λμ΄λ₯Ό κΈ°μ€μΌλ‘ μ λ ¬νλ€.
κ·Έ μ΄μ λ, λ¬Έμ μμ μꡬνλ 건 λ λμ¬λμ λμ΄μ μ΅μ μ°¨μ΄μ΄κΈ° λλ¬Έμ
λμ¬λ λμ΄ μμΌλ‘ μ λ ¬ν λ€, κ°μ₯ κ·Όμ²μ μμΌλ©΄μ λμ¬λμ ꡬμ±νλ λλ©μ΄κ° κ²ΉμΉμ§ μλ λμ¬λλ§ μ°ΎμΌλ©΄ λκΈ° λλ¬Έμ΄λ€.
λλ©μ΄κ° κ²ΉμΉμΉ μλ λμ¬λμ μ°Ύμ λ€, λ°κ²¬νλ©΄ λ°λ‘ break
νλ λ°©μμΌλ‘ μκ°μ νμ ν΅κ³Όν μ μμλ€.
μμ κ°μ μμ΄λμ΄λ₯Ό λ°νμΌλ‘ ꡬννλ©΄ μλμ κ°λ€.
import java.io.*;
import java.util.*;
public class Main {
int N;
int [] arr;
List<SnowMan> list = new ArrayList<>();
int ans = Integer.MAX_VALUE;
public static void main(String[] args) throws IOException {
new Main().sol();
}
private void sol() throws IOException {
setUp();
getCombinations();
Collections.sort(list, (a, b) -> a.height - b.height);
getAns();
System.out.println(ans);
}
private void getAns() {
for (int i = 0; i < list.size()-1; i++) {
for (int j = i+1; j < list.size(); j++) {
SnowMan snowMan1 = list.get(i);
SnowMan snowMan2 = list.get(j);
if (snowMan1.idx1 != snowMan2.idx1 && snowMan1.idx1 != snowMan2.idx2 && snowMan1.idx2 != snowMan2.idx1 && snowMan1.idx2 != snowMan2.idx2) {
ans = Math.min(Math.abs(snowMan1.height - snowMan2.height), ans);
break;
}
}
}
}
private void getCombinations() {
for (int i = 0; i < N-1; i++) {
for (int j = i+1; j < N; j++) {
list.add(new SnowMan(i, j, arr[i] + arr[j]));
}
}
}
private void setUp() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
String[] input = br.readLine().split(" ");
arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(input[i]);
}
}
static class SnowMan{
int idx1;
int idx2;
int height;
public SnowMan(int idx1, int idx2, int height) {
this.idx1 = idx1;
this.idx2 = idx2;
this.height = height;
}
}
}
κ²°κ³Ό
2οΈβ£ ν¬ ν¬μΈν° μ΄μ©ν νμ΄
μ΄λΆ νμμ μ΄μ©ν΄μ λ¬Έμ λ₯Ό ν΄κ²°ν μλ μλ€.
λ¨Όμ , μ΄λΆνμμ μν΄ λλ©μ΄λ₯Ό μ λ ¬ν΄μ€λ€.
μμ΄λμ΄λ λ€μκ³Ό κ°λ€.
ν λμ¬λμ i
λ²μ§Έ λλ©μ΄μ j
λ²μ§Έ λλ©μ΄λ‘ κ³ μ νλ€. (i
μ j
μ¬μ΄μ μ΅μ 2κ° μ΄μμ λλ©μ΄κ° μ‘΄μ¬ν΄μΌνλ€.)
κ·Έλ¦¬κ³ , κ·Έ μ¬μ΄μ λλ©μ΄λ€λ‘ λ νλμ λ€λ₯Έ λμ¬λμ ꡬμ±νλ€.
λμ¬λμ ꡬμ±ν λλ§λ€ λ λμ¬λμ μ°¨μ΄μ κ°μ ꡬνκ³ κ°μ κ°±μ ν΄μ€λ€.
λ§μ½ ν¬ν¬μΈν°λ‘ ꡬμ±ν λμ¬λμ ν¬κΈ°κ° κ³ μ λ λμ¬λλ³΄λ€ ν° κ²½μ° μ€λ₯Έμͺ½ ν¬μΈν°λ₯Ό κ°μνκ³
μμ κ²½μ° μΌμͺ½ ν¬μΈν°λ₯Ό μ¦κ°νλ λ°©μμΌλ‘ μ§νμμΌ λ λ μ¬λμ λμ΄ μ°¨μ΄κ° μ΅μκ° λ μ μλλ‘ νλ€.
λ€μμ μμ κ°μ΄ j
λ₯Ό μ΄λμμΌ κ³ μ λ λμ¬λμ λ€λ₯Έ λλ©μ΄λ‘ μ‘°ν©ν΄λ³΄κ³ , κ·Έ μ¬μ΄μ λλ©μ΄λ€λ‘ ν¬ ν¬μΈν°λ₯Ό μννλ©΄ λλ€.
import java.io.*;
import java.util.*;
public class Main {
int N;
int[] arr;
int ans = Integer.MAX_VALUE;
public static void main(String[] args) throws IOException {
new Main().sol();
}
private void sol() throws IOException {
setUp();
Arrays.sort(arr);
getAns();
System.out.println(ans);
}
private void getAns() {
for (int i = 0; i <= N - 4; i++) {
for (int j = N - 1; j >= i + 3; j--) {
int snowman1 = arr[i] + arr[j];
int left = i + 1, right = j - 1;
while (left < right) {
int snowman2 = arr[left] + arr[right];
if (snowman2 < snowman1) {
left++;
} else if (snowman2 > snowman1) {
right--;
} else {
System.out.println(0);
System.exit(0);
}
ans = Math.min(ans, Math.abs(snowman1 - snowman2));
}
}
}
}
private void setUp() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
String[] input = br.readLine().split(" ");
arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(input[i]);
}
}
}
κ²°κ³Ό