Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다.
배열 비교
두 배열의 모든 요소의 값이 같은지를 판단하는 알고리즘
static boolean equals(int[] a, int[] b)
{
if(a.length != b.length) return false; //배열의 길이가 다르면 false 리턴
for(int i = 0; i < a.length; ++i) if(a[i] != b[i]) return false; //요소의 값이 다르면 false 리턴
return true; //배열의 길이가 같고, 모든 요소의 값이 같으면 true 리턴
}
아래는 실행예제
public class Main{
static boolean equals(int[] a, int[] b)
{
if(a.length != b.length) return false; //배열의 길이가 다르면 false 리턴
for(int i = 0; i < a.length; ++i) if(a[i] != b[i]) return false; //요소의 값이 다르면 false 리턴
return true; //배열의 길이가 같고, 모든 요소의 값이 같으면 true 리턴
}
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6,7};
int[] array2 = {1,2,3,4,5,6};
int[] array3 = {2,5,3,6,7,7,8};
int[] array4 = {1,2,3,4,5,6,7};
System.out.println(equals(array, array2));
System.out.println(equals(array, array3));
System.out.println(equals(array, array4));
}
}
/*
false
false
true
*/
배열 복사
배열 a와 b를 매개값으로 받아서 배열b의 요소를 a배열로 복사하는 메소드를 작성
static void copy(int[] a, int[] b)
{
if(a.length < b.length) //b의 길이가 a보다 크면
{
System.out.println("배열의 길이가 모자릅니다.");
return;
}
for(int i = 0; i < b.length; ++i) a[i] = b[i]; //배열 요소 복사
}
아래의 코드는 a배열의 길이가 더 작아도 작은 길이 만큼만 복사하는 알고리즘
static void copy(int[] a, int[] b) { int num = a.length <= b.length ? a.length : b.length; for (int i = 0; i < num; i++) a[i] = b[i]; }
실행 예제
public class Main{
static void copy(int[] a, int[] b)
{
if(a.length < b.length) //b의 길이가 a보다 크면
{
System.out.println("배열의 길이가 모자릅니다.");
return;
}
for(int i = 0; i < b.length; ++i) a[i] = b[i]; //배열 요소 복사
}
static void printArray(int[] array) //배열 요소 출력
{
for(int i = 0; i < array.length; ++i)
{
if(i == array.length-1) {System.out.println(array[i]); break;}
System.out.print(array[i] + ", ");
}
}
public static void main(String[] args) {
int[] array = {5,3,32,9,6,3,8};
int[] array2 = {1,2,3,4,5,6,7};
printArray(array);
copy(array,array2); //array2를 array에 복사
printArray(array);
}
}
/*
5, 3, 32, 9, 6, 3, 8
1, 2, 3, 4, 5, 6, 7
*/
배열 역순으로 복사
배열 a와 b를 매개값으로 받아서 배열 b의 요소를 a배열로 역순으로 복사하는 메소드를 작성
static void rcopy(int[] a, int[] b)
{
if(a.length < b.length) //배열 b의 길이가 더 크면
{
System.out.println("배열의 길이가 모자릅니다.");
return;
}
for(int i = 0; i < b.length; ++i) a[i] = b[b.length-i -1]; //배열 요소 복사
}
아래의 코드는 a배열의 길이가 더 작아도 작은 길이 만큼만 복사하는 알고리즘
static void rcopy(int[] a, int[] b) { int num = a.length <= b.length ? a.length : b.length; for (int i = 0; i < num; i++)a[i] = b[b.length - i - 1]; }
실행예제
public class Main{
static void rcopy(int[] a, int[] b)
{
if(a.length < b.length) //배열의 길이가 서로 다르면
{
System.out.println("배열의 길이가 모자릅니다.");
return;
}
for(int i = 0; i < b.length; ++i) a[i] = b[b.length-i -1]; //배열 요소 복사
}
static void printArray(int[] array) //배열 요소 출력
{
for(int i = 0; i < array.length; ++i)
{
if(i == array.length-1) {System.out.println(array[i]); break;}
System.out.print(array[i] + ", ");
}
}
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6,7};
int[] array2 = {10,11,12,13,14,15,16};
printArray(array);
rcopy(array,array2);
printArray(array);
}
}
/*
1, 2, 3, 4, 5, 6, 7
16, 15, 14, 13, 12, 11, 10
*/
위 알고리즘이 이해가 안간다면 아래의 글을 읽는 것을 추천합니다.
2023.01.21 - [Data Structure & Algorithm] - [JAVA] 배열 요소를 역순으로 정렬하는 알고리즘
'자료구조 & 알고리즘 > 알고리즘' 카테고리의 다른 글
[JAVA] n이하의 소수를 구하는 알고리즘 (0) | 2023.01.24 |
---|---|
[JAVA] n진수 변환 알고리즘 (0) | 2023.01.23 |
[JAVA] 배열 요소를 역순으로 정렬하는 알고리즘 (0) | 2023.01.21 |
[JAVA] n개의 데이터 최댓값 구하기(난수 사용) (0) | 2023.01.20 |
[JAVA] 다중루프(중첩 for문) - 곱셈표, 도형, 피라미드 (0) | 2023.01.19 |