제출 코드
- 사용 알고리즘 :
문자열
문자열 문제는 쉬운듯 항상 까다롭다.
이 문제도 처음엔 쉽게 풀릴 줄 알고, 앞 문자열은 Upper
, 나머지 문자열은 Lower
를 적용해서 풀고 끝내려고 했는데 공백이 문제였다.
이 문제는 주어진 문자열의 공백 개수도 그대로 보존해야 해서, 이를 유지하려고 하다보니 코드가 복잡해졌다.
이번에 문제 풀다가 알게 된 건, String
의 toUpperCase
와 toLowerCase
로 숫자문자열에 적용해도 숫자는 변화하지 않는다는것. 따로 에러가 나진 않는다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Solution {
public String solution(String s) {
String answer = "";
String remains = s;
if(s.charAt(0)==' ') { // 시작문자열에 공백이 있는 경우
int i=0;
while(s.charAt(i++)==' ') answer += " ";
remains = remains.substring(i);
}
while(true){
int len = remains.length();
if(len==0) break;
int endPoint = remains.indexOf(" "); // 공백이 등장하는 최초 인덱스
String word;
if(endPoint<0) word = remains;
else word = remains.substring(0, endPoint);
answer += (word.charAt(0)+"").toUpperCase() + word.substring(1).toLowerCase(); // 변환된 문자열 추가
if(endPoint<0) break; // 추가한 문자열이 마지막 문자열일 경우
int cnt=1;
while(++endPoint<len){ // 공백 추가
if(remains.charAt(endPoint)==' ') cnt++;
else break;
}
answer += " ".repeat(cnt);
remains = remains.substring(endPoint);
}
return answer;
}
}