Algorithm & Data Structure

[프로그래머스] A 로 B 만들기 ( 배열의 비교 )

후뿡이 2022. 11. 29. 10:49

초기 코드


class Solution {
    public int solution(String before, String after) {
        char[] before_arr = before.toCharArray();
        char[] after_arr = after.toCharArray();

        Arrays.sort(before_arr);
        Arrays.sort(after_arr);

        System.out.println(after_arr);
        System.out.println(before_arr);
        System.out.println(before_arr.equals(after_arr));

        return (before_arr.toString().equals(after_arr.toString()) ? 1 : 0);
    }
}

 

처음 코드는 위와 같았다.

 

두 문자열을 char[]로 변환한 후 sort 과정을 거쳐 같을 경우 1을 return하고 다를 경우 0을 return 하는 코드를 구성하였다.

 

결과 값은 다음과 같았다.

분명 두 배열은 같은 성분을 가지고 있지만 같지 않다고 나오는 것이다.

 


성분이 같은 두 배열의 비교


찾아보니 배열과 객체는 성분이 같다고 하더라도 주소값이 다르면 다르다고 판단한다는 것을 알았다.

 

위와 같이 배열 객체에 toString을 사용해 주소값을 출력해 보니 두 배열의 주소값이 다른 것을 확인했고 그로 인해 두 배열이 다르다는 것을 확인할 수 있었다.

 

 


배열의 비교 방법


 

class Solution {
    public int solution(String before, String after) {
        char[] before_arr = before.toCharArray();
        char[] after_arr = after.toCharArray();

        Arrays.sort(before_arr);
        Arrays.sort(after_arr);

        return (new String(before_arr).equals(new String(after_arr)) ? 1 : 0);
    }
}

두 배열을 비교하기 위해서 두 배열을 성분으로 가지는 String 객체를 만들어 비교하기로 하였다.

결과값은 원하는 대로 1이 나오는 것을 확인할 수 있었다.