📌 문제의 핵심
new StringTokenizer(문자열, "구분자", 구분자 포함여부)
- hasMoreTokens() : 남은 토큰이 있으면 true, 없다면 false
- nextToken() : 다음 토큰을 String 으로 반환
toUpperCase()
/ toLowerCase()
: 문자열을 모두 대문자/소문자로 바꿈
replaceFirst()
: 문자열에서 처음으로 나오는 조건만 바꿈
✅ 문제 풀이
new StringTokenizer(s.toLowerCase(), " " ,true)
- 단어의 첫 문자 빼고는 모두 소문자여야 하기때문에 s.toLowerCase() 로 변환한 뒤 StringTokenizer로 나눠줘야 한다.
- 공백문자가 연속해서 나올 수 있기때문에 구분자(공백)도 토큰으로 포함시켜야 한다.
str.replaceFirst(c, c.toUpperCase())
- 단어의 첫 문자만 대문자로 바꿔야 하기때문에 replaceFirst()를 사용해준다.
- replace 함수는 조건으로 문자열만 사용할 수 있으므로 Character.toString()을 사용해 char 형식에서 String 으로 변환해준다.
import java.util.StringTokenizer;
class Solution {
public String solution(String s) {
StringBuffer answer = new StringBuffer();
StringTokenizer st = new StringTokenizer(s.toLowerCase(), " " ,true);
while(st.hasMoreTokens()) {
String str = st.nextToken();
String c = Character.toString(str.charAt(0));
str = str.replaceFirst(c, c.toUpperCase());
answer.append(str);
}
return answer.toString();
}
}