https://school.programmers.co.kr/learn/courses/30/lessons/181866
문자열 myString이 주어집니다. "x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.
단, 빈 문자열은 반환할 배열에 넣지 않습니다.
- 처음에는 split() 메서드를 사용해서 x를 기준으로 문자열을 잘라냈는데 샘플 테스트 케이스는 통과하지만 제출하면 전부 실패였다.
- 뭐가 문제인지 찾아보니 x가 연속으로 나오면 빈문자열이 배열에 포함되어있는 것이 문제였다.
- 이를 해결하기 위해 일단 split()한 후에 빈문자열이 아닌 경우에만 list에 추가하고 정렬한 후 마지막에 배열로 변환해서 리턴했더니 통과했다.
- 더 쉬운 방법이 있는지 찾아보니 StringTokenizer를 사용하면 빈문자열은 포함하지 않는다고 한다.
import java.util.*;
class Solution {
public String[] solution(String myString) {
ArrayList<String> arrlist = new ArrayList<>();
String[] my_string = myString.split("x");
for(String s : my_string) {
if(!s.equals("")) arrlist.add(s);
}
Collections.sort(arrlist);
String[] answer = arrlist.toArray(new String[arrlist.size()]);
return answer;
}
}
import java.util
class Solution {
public String[] solution(String myString) {
StringTokenizer st = new StringTokenizer(myString, "x");
int N = st.countTokens();
String[] answer = new String[N];
for(int i = 0; i < N; i++) {
answer[i] = st.nextToken();
}
Arrays.sort(answer);
return answer;
}
}