이 문제는 사실 어제(28일) 풀다가 자꾸 틀려서 오늘 다시 풀어보는 것이다,,😅
public static void main(String[] args) { Scanner input = new Scanner(System.in); int[] arr = new int[9]; int[] out = new int[7]; for(int i=0; i<9; i++){ arr[i] = input.nextInt(); } for(int i=0; i<3; i++){ for(int j=1; j<4; j++){ for(int k=2; k<5; k++){ for(int l=3; l<6; l++){ for(int m=4; m<7; m++){ for(int n=5; n<8; n++){ for(int o=6; o<9; o++){ if(arr[i]+arr[j]+arr[k]+arr[l]+arr[m]+arr[n]+arr[o] == 100){ out = new int[]{arr[i], arr[j], arr[k], arr[l], arr[m], arr[n], arr[o]}; break; } } } } } } } } Arrays.sort(out); System.out.println(Arrays.toString(out)); }
일단 어제 풀다 만 코드는 이렇다,,ㅎ
브루트 포스로 분류되어 있어서 그냥 for문을 일곱번 돌리면서 풀어놨는데
오늘 다시 생각해보니 for문을 이렇게 돌리면 중복되는 인덱스가 나오기때문에 틀렸던 것이었다.
public static void main(String[] args) { Scanner input = new Scanner(System.in); int[] arr = new int[9]; int[] out = new int[7]; for(int i=0; i<9; i++){ arr[i] = input.nextInt(); } for(int i=0; i<3; i++){ for(int j=i+1; j<4; j++){ for(int k=j+1; k<5; k++){ for(int l=k+1; l<6; l++){ for(int m=l+1; m<7; m++){ for(int n=m+1; n<8; n++){ for(int o=n+1; o<9; o++){ if(arr[i]+arr[j]+arr[k]+arr[l]+arr[m]+arr[n]+arr[o] == 100){ out = new int[]{arr[i], arr[j], arr[k], arr[l], arr[m], arr[n], arr[o]}; break; } } } } } } } } Arrays.sort(out); for(int i=0; i<7; i++){ System.out.println(out[i]); } }
for문의 조건을 이전 for문의 초기값에서 +1한 값을 초기값으로 주었다.
이렇게 하면 중복되는 인덱스없이 동작이 가능하다.
사실 이렇게 풀기 전에 ArrayList로 푸는 방법도 생각했는데
뭔가 될듯하면서 자꾸 안되는것이,,, 아주 서터레스다,,😞
주말이나 시간날 때 더 풀어보고 추가로 기록할 수 있도록 해야겠다