🔍 문제
📊 분석
- 문장의 첫 글자는 대문자 그리고 나머지는 소문자.
- 공백 이후 첫 글자는 대문자 그리고 나머지는 소문자.
- 만약 문장이 공백으로 끝난다면 공백을 살려서 return.
✏️ 풀이
class Solution {
public String solution(String s) {
String answer = "";
String[] tmp = s.split(" ");
for(int i = 0; i < tmp.length; i++){
if(tmp[i].length() == 0){
answer+= " ";
}
answer += tmp[i].substring(0,1).toUpperCase()+ tmp[i].substring(1).toLowerCase()+" ";
}
if(s.substring(s.length()-1, s.length()).equals(" ")) return answer;
return answer.substring(0, answer.length()-1);
}
}
처음 풀이로 풀었을시 런타임에러가 많이 나와 당황했다. 그리고 실패한 케이스 중 아마 마지막 공백으로 끝나는 문자열을 생각하지 못하고 풀었던 거 같다.
⚒️개선된 코드
class Solution {
public String solution(String s) {
String answer = "";
String[] tmp = s.split(" ");
for(int i = 0; i < tmp.length; i++){
// 문자열의 길이가 0이라면 공백 추가
if(tmp[i].length() == 0){
answer+= " ";
}
else{
answer += tmp[i].substring(0,1).toUpperCase()+ tmp[i].substring(1).toLowerCase()+" ";
}
}
// 입력 받은 문자열의 맨 마지막이 " " 라면 바로 answer 반환
if(s.substring(s.length()-1, s.length()).equals(" ")) return answer;
// 맨 마지막 " " 제거하고 answer 반환
return answer.substring(0, answer.length()-1);
}
}
혹시 몰라 if문뒤 로직들을 else내부에 적용하니 런타임 안에 해결할 수 있었다. else만으로도 성능차이가 많이 난다는 사실에 놀랐으며 앞으로 문제를 풀이할 때 명심하면 풀어봐야겠다.
'알고리즘 문제 연습' 카테고리의 다른 글
[프로그래머스]N개의 최소 공배수 (0) | 2024.10.13 |
---|---|
[프로그래머스] 바탕화면 정리 (0) | 2024.10.04 |
[프로그래머스] 성격 유형 검사하기 (0) | 2024.09.30 |
[프로그래머스] 숫자 짝꿍 (0) | 2024.09.20 |
[프로그래머스] 옹알이(2) (0) | 2024.09.03 |