성능 요약
메모리: 86.2 MB, 시간: 4.88 ms - Answer Code1
구분
코딩테스트 연습 > 연습문제
Answer Code1(23.02.03)
import java.util.*;
class Solution {
public String solution(String str) {
String answer = "";
// 1. 공백을 기준으로 문자열을 잘라서 String 배열에 저장
String [] strArr = str.split(" ");
// 2. 잘린 String 배열을 순서대로 처리
for(int i = 0; i < strArr.length; i++) {
String now = strArr[i];
// 문자열의 길이가 0이면 " " 추가
if(strArr[i].length() == 0) {
answer += " ";
}
// 문자열의 길이가 있다면
else {
// 첫번째 문자는 소문자 -> 대문자로 변환
answer += now.substring(0, 1).toUpperCase();
// 나머지 문자는 대문자 -> 소문자로 변환
answer += now.substring(1, now.length()).toLowerCase();
// 단어 사이에 공백을 위해 마지막에 `" "`을 추가
answer += " ";
}
}
// 3. 입력 받은 문자열의 맨 마지막이 " "이라면(기존에 있었던 공백이면), 바로 answer 반환
if(str.substring(str.length()-1, str.length()).equals(" ")) {
return answer;
}
// 4. 입력 받은 문자열의 맨 마지막이 `" "`이 아니라면 해당 부분을 제거하고 반환
return answer.substring(0, answer.length()-1);
}
}
Answer Code1 - 문제풀이
-
기존 문자열 이름인 str 을
split(" ")
을 사용하여 공백을 기준으로 잘라서 String 배열에 저장한다. -
잘린 String 배열을 순서대로 처리한다.
-
첫 번째 문자와 나머지 문자를 나눈다 -> substring()
-
첫 번째만 대문자로, 나머지는 소문자로 변환한다.
-
toUpperCase() : 소문자 -> 대문자
-
toLowerCase() : 대문자 -> 소문자
-
-
단어 사이에 공백을 위해 마지막에
" "
을 추가한다.
-
-
입력 받은 문자열의 맨 마지막이
" "
이라면(기존에 있었던 공백이면), 바로 answer을 반환한다.(마지막 공백을 지우지 않는다) -
입력 받은 문자열의 맨 마지막이
" "
이 아니라면 해당 부분을 제거하고 반환한다.
Review
-
첫 번째 부분과 나머지 부분을 구분하는 경우에는
substring()
을 사용하자. -
소문자와 대문자간 변환할 때 쓰이는
toUpperCase()
,toLowerCase()
에 대해 다시 공부하게 되었고, -
(중요) 문제풀이 - 3번째 조건 부분이 없으면 테스트케이스 부분이 실패로 되버렸다.
- 문제에 대한 설명 부분을 놓치지 말고, 완벽히 이해해야 한다는 것을 일깨워줬다.