[알고리즘문제풀기] 공백으로 구분하기 2

silver's avatar
Feb 25, 2025
[알고리즘문제풀기] 공백으로 구분하기 2

문제

내가 작성한 오답

: 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; } }
notion image

내가 작성한 정답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

silver