코딩 테스트(Coding Test)/프로그래머스

[프로그래머스] A로 B만들기

배씌 2023. 9. 1. 14:11

 

https://school.programmers.co.kr/learn/courses/30/lessons/120886

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


1. 아이디어

before 문자열과 after 문자열의 크기는 같으니 배열 형태로 변환하여 정렬 한 후, 각각의 인덱스를 비교하면 되겠다고 생각하였다. 따라서 아래와 같이 for 문을 이용하여 배열로 변환 후, 다시 for문을 이용하여 각 인덱스 자리를 비교하였는데,

static int solution(String a, String b) {
    char[] a1 = new char[a.length()];
    char[] b1 = new char[b.length()];

    for(int i=0; i<a.length(); i++){
        a1[i] = a.charAt(i);
        b1[i] = b.charAt(i);
    }

    Arrays.sort(a1);
    Arrays.sort(b1);

    for(int i=0; i<a1.length; i++){
        if(a1[i] != b1[i])
            return 0;
    }
    return 1;
}

 

다른 사람의 풀이를 보니, 접근 방법은 똑같은데 코드가 훨씬 간결 하였다.

public int solution(String before, String after) {
    char[] a = before.toCharArray();
    char[] b = after.toCharArray();
    Arrays.sort(a);
    Arrays.sort(b);

    return new String(a).equals(new String(b)) ? 1 :0;
}
  • toCharArray() : String 을 char[] 배열 형태로 변환 해줌

그리고 각 인덱스 별로 비교 할 필요 없이, 정렬 후 String 으로 변환하여 equals() 비교 하는 것이 훨씬 간편한 것이다.