[프로그래머스/181866] 문자열 잘라서 정렬하기
in Study / Coding Test
☑️ 문제
☑️ 풀이
첫 번째 풀이
Arrays.sort
로 사전순으로 정렬을 한 뒤, 빈문자열을 제외한 모든 원소를 리턴한다.
//시간: 20.06ms
//메모리: 103MB
import java.util.*;
class Solution {
public String[] solution(String myString) {
String[] arr = myString.split("x");
Arrays.sort(arr);
List<String> list = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
if (!arr[i].equals("")) {
list.add(arr[i]);
}
}
String[] answer = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
두 번째 풀이
StringTokenizer
를 사용하면 이미 공백은 제외하고 생성되기 때문에 공백 처리를 따로 하지 않아도 된다.
//시간: 22.80ms
//메모리: 81.5MB
import java.util.*;
class Solution {
public String[] solution(String myString) {
StringTokenizer st = new StringTokenizer(myString, "x");
String[] answer = new String[st.countTokens()];
int idx = 0;
while (st.hasMoreTokens()) {
answer[idx++] = st.nextToken();
}
Arrays.sort(answer);
return answer;
}
}
세 번째 풀이
- 다른 사람의 풀이를 보고
stream API
를 이용하여 풀어보았다. stream API
는 간편하지만 시간이 많이 소요되기 때문에 코테에서 잘 쓰지 않는다고 한다.
//시간: 43.09ms
//메모리: 85.6MB
import java.util.*;
class Solution {
public String[] solution(String myString) {
return Arrays.stream(myString.split("x")).filter(x -> !x.equals("")).sorted().toArray(String[]::new);
}
}