Search

배열7_문제08_두개뽑아서더하기

대분류
STEP05 배열
소분류
배열7_문제

영상

문제

package 배열7_문제; /* [문제] arr배열에서 숫자 2개씩 뽑아서 더한 값을 차례대로 result 배열에 저장 후 출력하시오. 단, 자기 차례의 인덱스 값은 더하지 않는다. 예) (1) [인덱스 0]의 값 = 2 :: (1, 3, 4, 1) ==> 2+1, 2+3, 2+4, 2+1 (2) [인덱스 1]의 값 = 1 :: (2, 3, 4, 1) ==> 1+2, 1+3, 1+4, 1+1 (3) [인덱스 2]의 값 = 3 :: (2, 1, 4, 1) ==> 3+2, 3+1, 3+4, 3+1 ... 이후, result 배열에 저장된 값들 중 중복되는 값은 전부 삭제 후 출력하시오. [정답] 중복 삭제 전 : result = {3, 5, 6, 3, 3, 4, 5, 2, 5, 4, 7, 4, 6, 5, 7, 5, 3, 2, 4, 5, 0, 0, 0, ... } 중복 삭제 후 : result = {3, 5, 6, 4, 2, 7, 0, 0, ... } */ public class 배열7_문제08_두개뽑아서더하기_문제 { public static void main(String[] args) { int[] arr = {2, 1, 3, 4, 1}; int[] result = new int[100]; } }
Java
복사

해설

package 배열7_문제; import java.util.Arrays; /* [문제] arr배열에서 숫자 2개씩 뽑아서 더한 값을 차례대로 result 배열에 저장 후 출력하시오. 단, 자기 차례의 인덱스 값은 더하지 않는다. 예) (1) [인덱스 0]의 값 = 2 :: (1, 3, 4, 1) ==> 2+1, 2+3, 2+4, 2+1 (2) [인덱스 1]의 값 = 1 :: (2, 3, 4, 1) ==> 1+2, 1+3, 1+4, 1+1 (3) [인덱스 2]의 값 = 3 :: (2, 1, 4, 1) ==> 3+2, 3+1, 3+4, 3+1 ... 이후, result 배열에 저장된 값들 중 중복되는 값은 전부 삭제 후 출력하시오. [정답] 중복 삭제 전 : result = {3, 5, 6, 3, 3, 4, 5, 2, 5, 4, 7, 4, 6, 5, 7, 5, 3, 2, 4, 5, 0, 0, 0, ... } 중복 삭제 후 : result = {3, 5, 6, 4, 2, 7, 0, 0, ... } */ public class 배열7_문제08_두개뽑아서더하기_정답 { public static void main(String[] args) { int[] arr = {2, 1, 3, 4, 1}; int[] result = new int[100]; /* arr = [2, 1, 3, 4, 1] 2 + 2 (X) 1 + 2 2 + 1 1 + 1 (x) 2 + 3 1 + 3 2 + 4 1 + 4 2 + 1 1 + 1 */ // 방법1 /* int index = 0; for(int i=0; i<arr.length; i++) { for(int j=0; j<arr.length; j++) { if(i != j) { System.out.println(arr[i] + " + " + arr[j]); int total = arr[i] + arr[j]; result[index] = total; index += 1; } } } System.out.println(Arrays.toString(result)); // result배열 안에서 중복을 제거 (중복숫자금지 3단계) int[] temp = new int[result.length]; int count = 0; for(int i=0; i<result.length; i++) { boolean check = false; for(int j=0; j<count; j++) { if(result[i] == temp[j]) { check = true; break; } } if(check == false) { temp[count] = result[i]; count += 1; } } System.out.println(Arrays.toString(temp)); */ // 방법2 int index = 0; for(int i=0; i<arr.length; i++) { for(int j=0; j<arr.length; j++) { if(i != j) { int total = arr[i] + arr[j]; boolean check = true; for(int k=0; k<index; k++) { if(total == result[k]) { check = false; break; } } if(check) { result[index] = total; index += 1; } } } } System.out.println(Arrays.toString(result)); } }
Java
복사