불로구

[ 자바 알고리즘/자료구조] - 자바 배열 비교 본문

프로그래밍/알고리즘

[ 자바 알고리즘/자료구조] - 자바 배열 비교

맹이맹이 2021. 2. 8. 00:11
반응형

이번에는 배열 두개의 값일 비교해보자.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

class ArrayEqual{
	static boolean equals(int[]a, int[] b){
		if(a.length != b.length){
			return false;
		}
		
		for(int i=0; i<a.length; i++){
			if(a[i] != b[i]){
				return false;
			}
		}
		return true;
	}
}

public class 두배열비교 {
	public static void main(String[] args) throws NumberFormatException, IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int arrA[] = new int[5];
		int arrB[] = new int[5];
		boolean result;
		String talk = "";
		
		for(int i=0; i<arrA.length; i++){
			arrA[i] = Integer.parseInt(br.readLine());
		}
		for(int i=0; i<arrB.length; i++){
			arrB[i] = Integer.parseInt(br.readLine());
		}
		
		result = ArrayEqual.equals(arrA, arrB);
		System.out.println(Arrays.toString(arrA));
		System.out.println(Arrays.toString(arrB));
		if(result == true){
			talk = "같아요~";
		}else{
			talk = "달라요~";
		}
		System.out.println(talk);
	}
}

좀 길다;

 

우선 두배열비교 class를 먼저 보자.

- BufferedReader를 사용했는데 Scanner를 사용해도 무관하다.

- intA라는 배열과 intB라는 배열을 선언했다.

- result는 ArrayEquals의 결과를 담을 변수이다

- talk는 단순하게 결과에 따라 문자열을 출력하기 위한 변수이다.

- 우선 for문을 통해 arrA와 arrB에 값을 대입한다. ( Scanner를 사용시 int타입의 배열이기때문에 변수.nextInt() 사용 )

- result변수에는 ArrayEquals class에 equals함수에 arrA와 arrB를 아규먼트로 넘겨준 후 결과값을 담는다.

- result의 결과가 true / false 에 따라 talk의 값을 다르게 대입한다.

 

ArrayEquas calss를 살펴보자.

- 우선 파라미터로 int[]a (= int arrA) , int[] b (= int arrB)를 받는다.

- if문을 통해 a와 b의 배열길이가 같은지 확인한다. -> 배열에 길이가 다르면 어짜피 내용도 다르기 때문

- 배열의 길이가 같다면 a.length = b.length이기 때문에 for문의 초기값과 조건문을 0 ~ a.length로 선언한다.

- if문을 통해 a[i]와 b[i]가 다른경우 return false를 넘겨주고, 모두 같다면 for문을 빠져나와 true를 반환한다.

반응형
Comments