[JAVA/프로그래머스] 연습문제: JadenCase 문자열 만들기

👀 문제

https://programmers.co.kr/learn/courses/30/lessons/12951

👊 도전

1. 설계

  1. 공백 기준으로 split()한다.
  2. 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. 설명

  1. s를 하나씩 체크하며 조건에 맞게 바꿔서 저장한다
    • s.charAt(i)가 공백이면 다음은 대문자임을 표시하기 위해 false=true로 바꾼다.
    • i가 공백이 아니고 flag가 T면 대문자로 바꿔라는 뜻이므로 toUpperCase()를 이용하여 바꾸고, flag=F로 바꿔 다시 초기화한다.
    • flag=F면 소문자로 바꿔서 저장한다. i가 대문자일수도 있으므로 toLowerCase()를 항상 거치도록 한다.
    • 문자열 삽입이 자주 일어나는 문제이므로 StringBuilder를 쓰는 것이 낫다.

👏 해결 완료!