문제
내가 작성한 오답
: String[] answer = new String[my_string.length()-count];에서 전체 단어의 개수에서 count를 제외했다.
class Solution {
public String[] solution(String my_string) {
String[] array = my_string.split(" ");
int count = 0;
for(String s : array){
if(s.isEmpty()) count++;
}
String[] answer = new String[my_string.length()-count];
int idx = 0;
for(String s : array){
if(s.isEmpty()) continue;
else answer[idx++] = s;
}
return answer;
}
}

내가 작성한 정답1
class Solution {
public String[] solution(String my_string) {
String[] array = my_string.split(" ");
int count = 0;
for(String s : array){
if(s.isEmpty()) count++;
}
String[] answer = new String[array.length-count];
int idx = 0;
for(String s : array){
if(s.isEmpty()) continue;
else answer[idx++] = s;
}
return answer;
}
}
내가 작성한 정답
import java.util.*;
class Solution {
public String[] solution(String my_string) {
String[] answer = {};
String[] array = my_string.trim().split(" ");
List<String> list = new ArrayList<>();
for(String s : array){
if(!s.isEmpty()) list.add(s);
}
return list.toArray(new String[list.size()]);
}
}
다른 사람들의 정답
while이용해서 공백 한칸으로 줄이기
class Solution {
public String[] solution(String my_string) {
String[] answer = null;
// 공백이 두 칸 이상 나오지 않도록 아래의 반복문을 수행한다.
// 각 공백이 한 칸만 나오면 반복문을 빠져나오고 그 공백 하나로 구분한다.
while (my_string.contains(" ")) {
my_string = my_string.replace(" ", " ");
}
// 공백으로 시작하면 그 공백은 제거해야 한다.
if (my_string.startsWith(" ")) {
my_string = my_string.substring(1, my_string.length());
}
answer = my_string.split(" ");
return answer;
}
}
정규식 이용
class Solution {
public String[] solution(String my_string) {
return my_string.trim().split("[ ]+");
}
}
[ ]+ 의미
• [ ] → 스페이스( ) 한 칸만 인식
• 탭(\t), 줄바꿈(\n), 캐리지 리턴(\r) 등은 인식하지 못함!
• + → 하나 이상 연속된 스페이스( )만 하나로 묶음
특징
✔ 오직 스페이스( )만 공백으로 처리
✔ 탭(\t), 줄바꿈(\n)은 따로 처리되지 않음
class Solution {
public String[] solution(String myString) {
// \\s → 모든 공백 문자(whitespace) => 스페이스( ), 탭(\t), 줄바꿈(\n), 캐리지 리턴(\r) 등 모든 공백 문자가 포함
// + → 하나 이상 연속된 공백을 하나로 묶어서 처리함
return myString.trim().split("\\s+");
}
}
\\s+ 의미
• \\s → 공백 문자(whitespace) 를 의미.
• 여기에는 스페이스( ), 탭(\t), 줄바꿈(\n), 캐리지 리턴(\r) 등 모든 공백 문자가 포함됨.
• + → 하나 이상 연속된 공백을 하나로 묶어서 처리함.
특징
✔ 스페이스뿐만 아니라, 탭(\t), 줄바꿈(\n)도 공백으로 처리
✔ 문자열 내 여러 개의 공백(" " 같은 것)도 하나로 처리
Share article