👀 문제
https://programmers.co.kr/learn/courses/30/lessons/12951
👊 도전
1. 설계
- 공백 기준으로 split()한다.
- flag를 둬서 공백이 나오면 true로 바꾸고, 그 다음 문자는 대문자로 바꾼다.
2. 구현
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
import java.util.*;
/**
*
* @author HEESOO
*
*/
class Solution {
public String solution(String s) {
String answer = "";
String[] str=s.split(" ");
StringBuilder sb=new StringBuilder();
boolean flag=true;
for(int i=0;i<s.length();i++){
String ch=s.charAt(i)+"";
if(ch.equals(" ")){ // 공백이면 다음은 대문자
flag=true;
sb.append(ch);
continue;
}
if(flag){ // 대문자로 만들어야 함
sb.append(ch.toUpperCase());
flag=false;
}
else sb.append(ch.toLowerCase()); // 소문자
}
answer=sb.toString();
return answer;
}
}
3. 결과
🤟 성공 🤟
4. 설명
- s를 하나씩 체크하며 조건에 맞게 바꿔서 저장한다
- s.charAt(i)가 공백이면 다음은 대문자임을 표시하기 위해 false=true로 바꾼다.
- i가 공백이 아니고 flag가 T면 대문자로 바꿔라는 뜻이므로 toUpperCase()를 이용하여 바꾸고, flag=F로 바꿔 다시 초기화한다.
- flag=F면 소문자로 바꿔서 저장한다. i가 대문자일수도 있으므로 toLowerCase()를 항상 거치도록 한다.
- 문자열 삽입이 자주 일어나는 문제이므로 StringBuilder를 쓰는 것이 낫다.