Algorithm
[99클럽 코테 스터디 13일차] 문자열, split()
kimphoby
2025. 4. 16. 16:49
📌 키워드
- 문자열
- 스플릿
📌 문제 및 요약
- Middler : jaden case 문자열 만들기
📌 Middler : JadenCase 문자열 만들기
문제에서 중요 키워드를 놓치고 split() 함수를 제대로 이해하지 못한 이슈로 조금 헤맸던 문제다. 단어의 첫글자가 대문자로 시작하도록 문자열을 만드는 간단한 문제였는데 "공백이 연속으로 나올 있을 수 있다." 는 문장을 못봤다. 간단 한 문제라서 정리하지 않고 바로 코딩으로 도입했는데 중요 요소를 놓쳤다. 쉬워보여도 입력, 로직, 출력을 제대로 정리하고 들어가야겠구나를 다시한번 느꼈다.
"공백 문자가 연속으로 나올 수 있습니다." => "공백 문자가 문자열의 앞 뒤로 나올 수 있습니다. 공백의 갯수를 유지해주세요"
처음에는 String.split(" ") 를 사용해서 문제를 해결했다가 연속으로 공백으로 나올 수 있다는 것을 인지하고는 split(" ", -1) 을 사용했다.
✔️ split(" ") vs split(" ", -1)
- split(" ")과 split(" ", -1)은 중간에 공백이 여러 개 있는 경우에는 동일하게 동작합니다. (빈 문자열 포함)
- 하지만 문자열 끝에 공백이 있을 경우, split(" ")은 빈 문자열을 버리고, split(" ", -1)은 살려줍니다.
- 그래서, 공백을 정확히 유지해야 하는 경우는 split(" ", -1)을 써야 해요.

<처음 시도>
split(" ")을 사용해서 문자열의 앞뒤 공백을 무시하는 바람에 실패
import java.util.*;
class Solution {
public String solution(String s) {
// 입력 : 길이 1이상 200 이하 문자열, 공백 연속 포함 가능
StringBuilder answer = new StringBuilder();
String[] words = s.split(" ");
System.out.println(Arrays.toString(words));
for (String word : words){
if (word.length() > 0){
answer.append(word.substring(0,1).toUpperCase());
answer.append(word.substring(1).toLowerCase());
}
answer.append(" ");
}
return answer.toString().substring(0,answer.length()-1);
}
}

<성공>
import java.util.*;
class Solution {
public String solution(String s) {
// 입력 : 길이 1이상 200 이하 문자열, 공백 연속 포함 가능
StringBuilder answer = new StringBuilder();
String[] words = s.split(" ",-1);
System.out.println(Arrays.toString(words));
for (String word : words){
if (word.length() > 0){
answer.append(word.substring(0,1).toUpperCase());
answer.append(word.substring(1).toLowerCase());
}
answer.append(" ");
}
return answer.toString().substring(0,answer.length()-1);
// 출력 : JadenCase로 바꾼 단어들을 공백 포함하여 연결한다.
}
}

