https://www.acmicpc.net/problem/2473
λ¬Έμ
KOI λΆμ€ κ³Όνμ°κ΅¬μμμλ λ§μ μ’ λ₯μ μ°μ± μ©μ‘κ³Ό μμΉΌλ¦¬μ± μ©μ‘μ 보μ νκ³ μλ€. κ° μ©μ‘μλ κ·Έ μ©μ‘μ νΉμ±μ λνλ΄λ νλμ μ μκ° μ£Όμ΄μ Έμλ€. μ°μ± μ©μ‘μ νΉμ±κ°μ 1λΆν° 1,000,000,000κΉμ§μ μμ μ μλ‘ λνλ΄κ³ , μμΉΌλ¦¬μ± μ©μ‘μ νΉμ±κ°μ -1λΆν° -1,000,000,000κΉμ§μ μμ μ μλ‘ λνλΈλ€.
κ°μ μμ μΈ κ°μ§ μ©μ‘μ νΌν©ν μ©μ‘μ νΉμ±κ°μ νΌν©μ μ¬μ©λ κ° μ©μ‘μ νΉμ±κ°μ ν©μΌλ‘ μ μνλ€. μ΄ μ°κ΅¬μμμλ κ°μ μμ μΈ κ°μ§ μ©μ‘μ νΌν©νμ¬ νΉμ±κ°μ΄ 0μ κ°μ₯ κ°κΉμ΄ μ©μ‘μ λ§λ€λ €κ³ νλ€.
μλ₯Ό λ€μ΄, μ£Όμ΄μ§ μ©μ‘λ€μ νΉμ±κ°μ΄ [-2, 6, -97, -6, 98]μΈ κ²½μ°μλ νΉμ±κ°μ΄ -97μ -2μΈ μ©μ‘κ³Ό νΉμ±κ°μ΄ 98μΈ μ©μ‘μ νΌν©νλ©΄ νΉμ±κ°μ΄ -1μΈ μ©μ‘μ λ§λ€ μ μκ³ , μ΄ μ©μ‘μ΄ νΉμ±κ°μ΄ 0μ κ°μ₯ κ°κΉμ΄ μ©μ‘μ΄λ€. μ°Έκ³ λ‘, μΈ μ’ λ₯μ μμΉΌλ¦¬μ± μ©μ‘λ§μΌλ‘λ νΉμ μΈ μ’ λ₯μ μ°μ± μ©μ‘λ§μΌλ‘ νΉμ±κ°μ΄ 0μ κ°μ₯ κ°κΉμ΄ νΌν© μ©μ‘μ λ§λλ κ²½μ°λ μ‘΄μ¬ν μ μλ€.
μ°μ± μ©μ‘κ³Ό μμΉΌλ¦¬μ± μ©μ‘μ΄ μ£Όμ΄μ‘μ λ, μ΄ μ€ κ°μ μμ μΈ κ°μ μλ‘ λ€λ₯Έ μ©μ‘μ νΌν©νμ¬ νΉμ±κ°μ΄ 0μ κ°μ₯ κ°κΉμ΄ μ©μ‘μ λ§λ€μ΄λ΄λ μΈ μ©μ‘μ μ°Ύλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μλ μ 체 μ©μ‘μ μ Nμ΄ μ λ ₯λλ€. Nμ 3 μ΄μ 5,000 μ΄νμ μ μμ΄λ€. λμ§Έ μ€μλ μ©μ‘μ νΉμ±κ°μ λνλ΄λ Nκ°μ μ μκ° λΉμΉΈμ μ¬μ΄μ λκ³ μ£Όμ΄μ§λ€. μ΄ μλ€μ λͺ¨λ -1,000,000,000 μ΄μ 1,000,000,000 μ΄νμ΄λ€. Nκ°μ μ©μ‘λ€μ νΉμ±κ°μ λͺ¨λ λ€λ₯΄κ³ , μ°μ± μ©μ‘λ§μΌλ‘λ μμΉΌλ¦¬μ± μ©μ‘λ§μΌλ‘ μ λ ₯μ΄ μ£Όμ΄μ§λ κ²½μ°λ μμ μ μλ€.
μΆλ ₯
첫째 μ€μ νΉμ±κ°μ΄ 0μ κ°μ₯ κ°κΉμ΄ μ©μ‘μ λ§λ€μ΄λ΄λ μΈ μ©μ‘μ νΉμ±κ°μ μΆλ ₯νλ€. μΆλ ₯ν΄μΌνλ μΈ μ©μ‘μ νΉμ±κ°μ μ€λ¦μ°¨μμΌλ‘ μΆλ ₯νλ€. νΉμ±κ°μ΄ 0μ κ°μ₯ κ°κΉμ΄ μ©μ‘μ λ§λ€μ΄λ΄λ κ²½μ°κ° λ κ° μ΄μμΌ κ²½μ°μλ κ·Έ μ€ μ무κ²μ΄λ νλλ₯Ό μΆλ ₯νλ€.
νμ΄
μΌλΆ νμ
μΌλ‘ ꡬν μλ£ π₯
1οΈβ£ μ©μ‘λ€μ νΉμ±κ° μ λ ¬
2οΈβ£ for ( i = 0 ~ N-2 )
π first ( 첫λ²μ§Έ μ©μ‘ ) = i
π second ( λλ²μ§Έ μ©μ‘ ) = first + 1
π third ( μΈλ²μ§Έ μ©μ‘ ) = N-1
β‘οΈ i ~ N-1 λ²μμμ μ΄λΆνμμ μ§ννλ κ²
3οΈβ£ ν©μ μ λκ°μ΄ μμ κ²μ μ°Ύλ κ² βΌοΈ
π ν©μ΄ 0 μ΄λ©΄ λμ βΌοΈ
μ½λ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main_BOJ_2473_μΈμ©μ‘ {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer stringTokenizer;
int N = Integer.parseInt(br.readLine());
stringTokenizer = new StringTokenizer(br.readLine());
long[] valueOfSolution = new long[N];
for(int i = 0 ; i < N ; i++){
valueOfSolution[i] = Long.parseLong(stringTokenizer.nextToken());
}
Arrays.sort(valueOfSolution);
long minOfValue = Long.MAX_VALUE;
long[] valueOfAnswer = new long[3];
for(int i = 0 ; i < N-2 ; i++){
int first = i;
int second = i+1;
int third = N-1;
while(second < third){
long valueOfSum = valueOfSolution[first] + valueOfSolution[second] + valueOfSolution[third];
long absOfvalueOfSum = Math.abs(valueOfSum);
if(absOfvalueOfSum < minOfValue){
minOfValue = absOfvalueOfSum;
valueOfAnswer = new long[]{ valueOfSolution[first], valueOfSolution[second], valueOfSolution[third] };
}
if(valueOfSum < 0){
second++;
}
else if(valueOfSum > 0){
third--;
}
else{
for(long v : valueOfAnswer)
sb.append(v + " ");
System.out.println(sb);
return;
}
}
}
for(long v : valueOfAnswer)
sb.append(v + " ");
System.out.println(sb);
}
}
'μκ³ λ¦¬μ¦ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ λ°±μ€ / BOJ 20551 ] Sort λ§μ€ν° λ°°μ§νμ νκ³μ ( JAVA / μλ° ) (0) | 2021.10.11 |
---|---|
[ λ°±μ€ / BOJ 2573 ] λΉμ° ( JAVA / μλ° ) (0) | 2021.10.07 |
[ λ°±μ€ / BOJ 2812 ] ν¬κ² λ§λ€κΈ° ( JAVA / μλ° ) (0) | 2021.10.07 |
[ λ°±μ€ / BOJ 2758 ] λ‘λ ( JAVA / μλ° ) (0) | 2021.10.04 |
[ λ°±μ€ / BOJ 2665 ] λ―Έλ‘ λ§λ€κΈ° ( JAVA / μλ° ) (0) | 2021.10.03 |