1. 조건
2. 내 생각
문자열을 공백 기준으로 나눈 다음 반복문을 통해 첫 번째 글자를 대문자로 변경하여 출력하면 될 것 같았다.
3. 실행 결과
class Solution {
public String solution(String s) {
String[] lowArr = s.toLowerCase().split(" ");
String answer = "";
for(String la : lowArr) {
String first = la.substring(0, 1).toUpperCase();
String second = la.substring(1, la.length());
answer += first + second + " ";
}
System.out.println("answer = " + answer);
return answer;
}
}
위 이미지를 보면 알겠지만 문자열은 제대로 나오는데 마지막에 공백이 존재해 틀린 답이었다.
맨 뒤의 공백을 지우고자 return을 answer.trim()으로 변경하여 채점한 결과 런타임 에러가 발생했다.
4. 개선 결과
class Solution {
public String solution(String s) {
String[] lowArr = s.split(" ");
String answer = "";
for(String la : lowArr) {
if(la.length() == 0) {
answer += " ";
} else {
answer += la.substring(0, 1).toUpperCase();
answer += la.substring(1).toLowerCase();
answer += " ";
}
}
return answer.trim();
}
}
조금 더 분명하게 첫 글자를 대문자로 변환하고자 변수를 만들었지만 first와 second라는 변수를 새롭게 선언하는 과정에서 시간이 더 걸린다고 생각했다. 시간을 줄이기 위해 빈 문자열 answer에 각각 첫 대문자와 이후의 소문자를 더해주었고 각각의 단어마다 뒤에 공백을 추가해 구분하였다.
위 사진과 같이 런타임 에러는 해결한 듯 하지만 한 케이스를 통과하지 못했고
if(s.substring(s.length()-1, s.length()).equals(" ")){
return answer;
}
입력받은 문자열 s의 마지막 값이 공백인지 확인하는 코드를 추가해 해결할 수 있었다.
'자바 알고리즘' 카테고리의 다른 글
[알고리즘] 프로그래머스 - 올바른 괄호 (Level 2) (0) | 2023.05.05 |
---|---|
[알고리즘] 프로그래머스 - 최솟값 만들기 (0) | 2023.05.04 |
[알고리즘] 프로그래머스 - 자연수 뒤집어 배열로 만들기 (0) | 2023.02.26 |
[알고리즘] 프로그래머스 - 숫자 문자열과 영단어 (0) | 2023.02.20 |
[알고리즘] 프로그래머스 - 모의고사 (0) | 2023.02.18 |