algorithm
자바 알고리즘 - A로 B 만들기
ohgu-ohgu
2023. 9. 6. 10:53
728x90
문제 설명
문자열 before
와 after
가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.
제한 사항
- 0 <
before
의 길이 ==after
의 길이 < 1,000 - before와 after는 모두 소문자로 이루어져 있습니다.
답안
import java.util.*;
class Solution {
public int solution(String before, String after) {
String[] arrB = before.split("");
String[] arrA = after.split("");
Arrays.sort(arrB);
Arrays.sort(arrA);
for(int i=0; i<arrB.length; i++) {
if(!arrA[i].equals(arrB[i])) {
return 0;
}
}
return 1;
}
}
순서를 어떻게 바꿔야하나 고민하다가 두 문장 다 정렬 했을 때 모든 원소가 동일해야 한다는걸 깨달았다.
그래서 두 문장 모두 split()
을 이용해서 String
배열로 만든 다음 Arrays.sort()
통해 원소를 정렬한다.
그리고 for문을 돌면서 원소를 비교하고 만약 다르다면 0를 리턴하고 for문을 빠져나오면 1을 리턴한다.
근데 for문을 돌지 않고도 답을 도출해내는 방법도 있다.
import java.util.*;
class Solution {
public int solution(String before, String after) {
String[] arrB = before.split("");
String[] arrA = after.split("");
Arrays.sort(arrB);
Arrays.sort(arrA);
return String.join("", arrB).equals(String.join("",arrA))? 1:0;
}
}
배열로 만들어서 정렬하는 것까진 동일하지만 정렬된 배열을 String
타입으로 변환하여 동일 유무를 파악한다.
만약 동일하다면 1, 다르다면 0을 리턴한다.
참고
문자열.split(구분자)
: 문자열을 입력한 구분자에 따라 구분하여 배열로 반환, 구분자가 없는 경우 한글자씩 떼서 배열로 반환Arrays.sort(배열)
: 배열을 오름차순으로 정렬문자열.eqauls(문자열)
: 두개의 문자열의 값을 비교하여 동일하면 true, 다르다면 false를 리턴String.join("사이에 넣을 문자열", 배열)
: 배열 원소 사이 사이에 입력한 문자열을 넣어 하나의 문자열로 리턴
728x90