처음에 접근할때, 어떻게 해야 7개의 숫자를 이용해서 100을 만들수있는 로직을 만들수있나 생각중.
총합에 100을 빼면, 나머지 두명의 키가 되는것이므로, 배열을 돌려서 두개의 합이 나머지 값이 나온것을 제외해주면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> list = new ArrayList<Integer>();
//난쟁이들 키 총합 변수
int max_amount =0;
//리스트에 키 추가, 총합변수에 키 저장
for(int i=0; i<9;i++){
String str = bf.readLine();
int num = Integer.parseInt(str);
list.add(num);
max_amount +=num;
}
//
int left_amout= max_amount-100;
//정렬
Collections.sort(list);
int erase_a =0;
int erase_b =0;
//반복문으로 나머지값 을 충족하는 두값 value 찾기
for(int i=0;i<9;i++){
int a = list.get(i);
for(int j=i+1;j<9;j++){
if(a+ list.get(j) ==left_amout){
erase_a =list.get(i);
erase_b = list.get(j);
break;
}
}
}
//값 찾아서 제거
list.remove(Integer.valueOf(erase_a));
list.remove(Integer.valueOf(erase_b));
for(int a : list){
System.out.println(a);
}
}
}
list에서 제거하는 작업을 두번째 for 문에 적용했다가, for문 index boud exception에 걸려서,
제거문은 밖으로 빼줬다. 값을 찾는 즉시 제거하고 싶은데, 어떻게 하면 좋을지 잘 모르겠다.
'코딩 테스트' 카테고리의 다른 글
수 이어 쓰기 1 (백분1748) (0) | 2021.11.15 |
---|---|
날짜계산(백준1476) (0) | 2021.11.15 |
약수(백준 1037) (0) | 2021.11.10 |
소수 개수 구하기 (0) | 2021.11.09 |
최소공배수,최대공약수 (0) | 2021.11.09 |