코딩 테스트(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() 비교 하는 것이 훨씬 간편한 것이다.