1. 배열의 합 계산
(정수 배열이 주어졌을 때 배열의 모든 요소의 합을 구하기)
입력 : [1, 2, 3, 4, 5]
출력 : 15
테스트
package Test;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(arr) + " 배열의 합 : " + arraySum(arr));
}
public static int arraySum(int[] arr) {
int sum = 0;
for(int num : arr) { // 배열을 하나씩 꺼내서 num에 저장
sum += num;
}
return sum;
}
}
- Arrays.toString(arr) : 배열의 내용 [1, 2, 3, 4, 5] 형태의 문자열로 반환.
- arraySum(arr) : arr 배열의 모든 원소를 더해서 반환.
결과
2. 두 배열 병합 후 정렬
(두 개의 정렬된 배열을 병합하고 정렬된 배열 반환하기)
입력 : [1, 3, 5], [2, 4, 6]
출력 : [1, 2, 3, 4, 5, 6]
테스트
package Test;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr1 = {1, 3, 5};
int[] arr2 = {2, 4, 6};
System.out.println(Arrays.toString(arr1) + " + " + Arrays.toString(arr2));
int[] merged = forMergeSort(arr1, arr2);
System.out.println(Arrays.toString(merged));
}
public static int[] forMergeSort(int[] arr1, int[] arr2) {
// 두 배열 크기 합만큼 새 배열 생성
int[] merged = new int[arr1.length + arr2.length];
// arr1 배열을 merge 배열에 넣기
for(int i = 0; i < arr1.length; i++) {
merged[i] = arr1[i];
}
// arr2 배열을 merge 배열에 넣기
for(int i = 0; i < arr2.length; i++) {
merged[arr1.length + i] = arr2[i];
}
// 배열 정렬
Arrays.sort(merged);
return merged;
}
}
결과
다른 방법
public static int[] mergeSort(int[] arr1, int[] arr2) {
int[] merge = new int[arr1.length + arr2.length];
// 배열 복사
System.arraycopy(arr1, 0, merge, 0, arr1.length);
System.arraycopy(arr2, 0, merge, arr1.length, arr2.length);
// 배열 정렬
Arrays.sort(merge);
return merge;
}
- System.arraycopy() : 배열1(arr1)과 배열2(arr2)의 원소를 새 배열(merge)에 복사.
- arraycopy(arr1, 0, merge, 0, arr1.length);
arr1 : 복사할 배열, 0 : arr1에서 복사를 시작할 인덱스, merge : 복사된 내용을 저장할 배열,
0 : merge에서 값을 저장하기 시작할 인덱스, arr1.length : 복사할 원소 개수.(arr1의 길이만큼)
- arraycopy(arr1, 0, merge, 0, arr1.length);
- Arrays.sort(merge); : 병합된 배열을 정렬.
결과
개인적으로 for문이 더 쉬운데...
+ 2차원 배열 합 구하기
(3x3의 2차원)
테스트
package Test;
public class Main2 {
public static void main(String[] args) {
int[][] arr = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int sum = arraySum(arr);
System.out.println("2차원 배열 합 : " + sum);
}
public static int arraySum(int[][] arr) {
int sum = 0;
for(int i = 0; i < arr.length; i++) { // 각 행 순환
for(int j = 0; j < arr[i].length; j++) { // 각 열 순환
sum += arr[i][j];
}
}
return sum;
}
}
결과
[ 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45 ]
++ 2차원 배열 병합
* 행 단위로 병합 : 두 배열을 병합할 때 배열의 행을 차례로 이어붙이는 방식.
package Test;
import java.util.Arrays;
public class Main3 {
public static void main(String[] args) {
int[][] arr1 = {
{1, 2}, {3, 4}
};
int[][] arr2 = {{5, 6}, {7, 8}};
int[][] merge = merge(arr1, arr2);
System.out.println("행 단위 병합 : " + Arrays.deepToString(merge));
}
public static int[][] merge(int[][] arr1, int[][] arr2){
int[][] merge = new int[arr1.length + arr2.length][];
// 첫 번째 배열 복사
for(int i = 0; i < arr1.length; i++) {
merge[i] = arr1[i];
}
// 두 번째 배열 복사
for(int i = 0; i < arr2.length; i++) {
merge[arr1.length + i] = arr2[i];
}
return merge;
}
}
* 열 단위로 병합 : 두 배열을 병합할 때 각 행의 열을 이어붙이는 방식.
package Test;
import java.util.Arrays;
public class Main3 {
public static void main(String[] args) {
int[][] arr1 = {
{1, 2}, {3, 4}
};
int[][] arr2 = {{5, 6}, {7, 8}};
int[][] merge1 = merge1(arr1, arr2);
System.out.println("행 단위 병합 : " + Arrays.deepToString(merge1));
int[][] merge2 = merge2(arr1, arr2);
System.out.println("열 단위 병합 : " + Arrays.deepToString(merge2));
}
public static int[][] merge1(int[][] arr1, int[][] arr2){
int[][] merge = new int[arr1.length + arr2.length][];
// 첫 번째 배열 복사
for(int i = 0; i < arr1.length; i++) {
merge[i] = arr1[i];
}
// 두 번째 배열 복사
for(int i = 0; i < arr2.length; i++) {
merge[arr1.length + i] = arr2[i];
}
return merge;
}
public static int[][] merge2(int[][] arr1, int[][] arr2){
int[][] merge = new int[arr1.length][arr1[0].length + arr2[0].length];
// 첫 번째 배열 열 복사
for(int i = 0; i < arr1.length; i++) {
for(int j = 0; j < arr1[i].length; j++) {
merge[i][j] = arr1[i][j];
}
}
// 두 번째 배열 열 복사
for(int i = 0; i < arr2.length; i++) {
for(int j = 0; j < arr2[i].length; j++) {
merge[i][arr1[i].length + j] = arr2[i][j];
}
}
return merge;
}
}
결과
배열은 어렵다.....
'코딩 테스트' 카테고리의 다른 글
SQL 테스트 (2) (0) | 2024.12.30 |
---|---|
SQL 테스트 (1) (0) | 2024.12.30 |
기본 알고리즘 (0) | 2024.12.30 |