문제 설명
단어가 공백 한 개 이상으로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
my_string은 영소문자와 공백으로만 이루어져 있습니다. 1 ≤ my_string의 길이 ≤ 1,000 my_string의 맨 앞과 맨 뒤에도 공백이 있을 수 있습니다. my_string에는 단어가 하나 이상 존재합니다.
나의 코드
import java.util.List;
import java.util.ArrayList;
class Solution {
public String[] solution(String my_string) {
String[] arr = my_string.split(" ");
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 j=0; j<list.size(); j++) {
answer[j] = list.get(j);
}
return answer;
}
}
다른 사람 코드
class Solution {
public String[] solution(String my_string) {
return my_string.trim().split("[ ]+");
}
}
trim()
split("[ ]+")
"[ ]+"
는 하나 이상의 공백을 나타내는 정규표현식정리
trim()
메서드를 통해 양쪽의 공백을 제거split("[ ]+")
메서드를 통해 공백을 기준으로 문자열을 나누어 줌class Solution {
public String[] solution(String myString) {
return myString.trim().split("\\s+");
}
}
trim()
split("\\s+")
\\s+
는 하나 이상의 공백 문자를 나타냄\\s
는 공백 문자(스페이스, 탭, 줄 바꿈 등)를 의미+
는 하나 이상의 앞선 패턴이 반복되는 것을 의미정리
trim()
메서드를 통해 문자열의 앞뒤 공백을 제거split("\\s+")
메서드를 통해 공백을 기준으로 문자열을 나누어 줌느낀 점
우선 주어진 문자열을 split()
을 통해 공백 하나가 나올 때마다 배열로 잘라내고, 그 배열을 돌면서 공백으로 이루어진 배열이 아닐 때만 List에 추가해준 후, String 배열로 답을 도출해냈다. 다른 사람 코드를 보면 trim()
메소드와 정규표현식을 활용하여 좀 더 간단한 코드로 문제를 풀 수 있었다. 😮