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;
}
}
'Programmers > JAVA' 카테고리의 다른 글
[ ArrayList 생성 ], [ ArrayList 메소드 ], [ ArrayList ↔ List 변경 ] (0) | 2023.01.14 |
---|---|
[ 프로그래머스 ] 가장 가까운 같은 글자 - Java (0) | 2023.01.13 |
[ 프로그래머스 ] 마법의 엘리베이터 - Java (0) | 2023.01.06 |
[ 프로그래머스 ] 숫자 문자열과 영단어 - Java (0) | 2023.01.06 |
[ 프로그래머스 ] 비밀지도 - Java (0) | 2023.01.06 |