영상
문제
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
복사