CodeWars 마흔 세 번째 문제
Updated:
Which are in?
public static String[] inArray(String[] array1, String[] array2) {
if(array1.length == 0 || array2.length == 0) {
return new String[] {};
}
Arrays.sort(array1);
String contrainString = "";
String strConvertArray2 = String.join(",", array2);
for(String array1Str : array1) {
if(strConvertArray2.contains(array1Str)) {
contrainString += array1Str + ",";
}
}
if("".equals(contrainString)) {
return new String[] {};
}
return contrainString.split(",");
}
- 이중 for을 이용해서 풀라고 했다.
- 하지만 분명 이런건 다이나믹하게 풀 수 있다고 생각. join을 이용해서 String 배열을 String으로 바꾸고 contain을 이용하여 일치하는 string을 찾으려고 했다.
- 문제는 이걸 다시 스트링 배열로 변환하기 위해서 여러 고민끝에 끝에 “,”을 넣고 마지막에 split으로 깰끔하게 풀려고 했다.
- 그런데 또 문제가 일치하지 않은 문자열이 하나도 없는 경우 split은 ““으로 처리된 string도 꼭 1개의 스트링 배열을 생성해서 return을 했다.
- 그래서 오류가 발생하여 어쩔 수없이 일치하지 않는 경우에 대한 조건문을 넣었다.
- best 코드도 거의 비슷하게 풀었거나 아님 이중 for으로 풀었다.