본문 바로가기

카테고리 없음

백준 2309번 자바로 풀기

import java.util.*;

import java.io.*;

 

public class Main{

 

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner s=new Scanner(System.in);

int [] arr=new int[9];

int sum=0;

for(int i=0; i<9; i++) {

arr[i]=s.nextInt();

sum+=arr[i];

}

for(int i=0; i<8; i++) {

for(int j=i+1; j<9; j++) {

if(sum-arr[i]-arr[j]==100) {

arr[i]=0;

arr[j]=0;

Arrays.sort(arr);

for(int k=2; k<9; k++) {

System.out.println(arr[k]);

}

return;

}

}

}

}

}

 

처음 만들었던 코드가 런타임 초과 오류가 나와서 다른 글을 참고하면서 작성했는데 9명중 7명의 합을 구하는거니 생각해보면 9명의 합에서 2명을 뺴는것과 동일하고 이는 곧,이중for문을 사용하여서 해결하는 좋은 방법을 유도할수있당

그런데 여기서 눈여겨봐야될 알고리즘은 바로 난쟁이가 아닌 배열의 값을 0으로 만들어서 Arrays.sort함수를 실행하여서 아예 정렬을 시킨후 배열의 2번쨰 인덱스값부터 프린트해주는 방법은 정말 좋은 알고리즘으로 2개를 제거해야하는 상황에서 요긴하게 사용할 수 있을것 같다!