1. 문제 설명
2. 문제 풀이 핵심이라 생각하는 점
- 소문자로 만든다 -> 공백을 기준으로 문자열 배열 얻는다 -> 맨 앞글자를 대문자로 바꿔준다.
- 쉬웠다.. 하지만 여러 가지 고려할 상황들을 추가해주어야 하였다.
- 공백이 연속으로 나오면 결괏값에도 공백이 연속으로 나오도록 해주어야 한다.
- 주어진 문자열의 마지막이 공백으로 끝난다면 공백으로 출력되도록 해주어야 한다.
- 이 점만 생각해서 풀이하면 풀이가 쉬워질 것 같다.
3. 정답 코드 확인 및 활용 메소드 체크
3-1 : 정답 코드 확인
class Solution {
public String solution(String s) {
String answer = "";
//소문자로 만들고 공백 기준으로 문자배열 얻기
s = s.toLowerCase();
String[] splitS = s.split(" ");
for (int i = 0; i < splitS.length; i++) {
//공백이면 공백추가해주고 continue;
if(splitS[i].isEmpty()) {
answer += " ";
continue;
}else if(i>0 && i != splitS.length){ //맨처음과 맨 마지막에는 공백 추가X
answer += " ";
}
//맨 앞글자 대문자로 만든 후 변경해주기
char first = Character.toUpperCase((splitS[i].charAt(0)));
splitS[i] = first +splitS[i].substring(1);
answer += splitS[i];
}
//문자열 맨 마지막이 " "이라면 공백 추가해주기
if( s.charAt(s.length()-1) == ' ') answer += " ";
return answer;
}
}
4. 공부하고 싶은 다른 분의 풀이
- 난 무엇을 한 것인가.. ㅎㅎ
- 문자열을 하나하나 분리하여 배열로 만들고 boolean flag를 활용
- 방금 더해준 문자열이 " " 공백이라면
- 다음에 붙여줄 문자열을 대문자로 만들어주기.
- 공백이 아니라면 그대로 더해주기
class Solution {
public String solution(String s) {
String answer = "";
String[] sp = s.toLowerCase().split("");
boolean flag = true;
for(String ss : sp) {
answer += flag ? ss.toUpperCase() : ss;
flag = ss.equals(" ") ? true : false;
}
return answer;
}
}