첫번째로 제출한 답
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> list_h = new ArrayList<>();
int sum = 0;
int[] arr_target = new int[2];
for (int i = 0; i < 9; i++) {
list_h.add(sc.nextInt());
sum += list_h.get(i);
}
for (int i = 0; i < 9; i++) {
for (int j = i+1; j < 9; j++) {
if(sum-list_h.get(i)-list_h.get(j)==100) {
arr_target[0] = list_h.get(i);
arr_target[1] = list_h.get(j);
}
}
}
list_h.remove((Integer)arr_target[0]);
list_h.remove((Integer)arr_target[1]);
//오름차순정렬
list_h.sort(Comparator.naturalOrder());
for (int i = 0; i < list_h.size(); i++) {
System.out.println(list_h.get(i));
}
}
}
접근방식 -> 일곱난쟁이의 키의 합이 = 100이기 때문에 아홉난쟁이의 키의 합 - 가짜난쟁이 2명의 키 = 100 이다 이중 for문으로 전체를 조회하며
sum-list_h.get(i)-list_h.get(j)==100 인경우 i번째 난쟁이와 j번째 난쟁이가 가짜이기 때문에 해당 값(난쟁이의 키)을 기억해뒀다가 for문 종료후 해당값을 list에서 삭제한다.
결과 -> 정답
특이사항 -> ArrayList.remove() 메소드를 이용해 특정 "정수" 값을 가진 요소를 삭제할때는 객체화 시켜서 파라미터에 넣어주어야 한다
이유는 int로 바로 넣었을때 오버로딩 되어있는 remove(int index)
메소드가 실행되기때문이다.
remove(int index) -> 해당 index의 객체를 삭제한다
remove(Object o)-> 해당값을 가진 객체를 삭제한다.'