알고리즘(Algorithm)/프로그래머스(Programmers)

[프로그래머스] JadenCase 문자열 만들기 - JAVA

나아가는중 2021. 11. 9. 16:54
반응형

프로그래머스 JadenCase 문자열 만들기 - JAVA


문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건

  1. s는 길이 1 이상인 문자열입니다.
  2. s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
  3. 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 )

문제 풀이

문제를 읽고 Level 2중에서 쉬운 문제라고 생각했습니다. 문자열을 조금이라도 다룰줄 안다면 쉽게 풀 수 있는 문제인거 같습니다.


Tip. 백준이나 프로그래머스에서 이와 비슷한 문제들을 여럿 풀어보며 문제 설명 혹은 제한 조건에 공백이 한번만 나온다는 말은 어디에도 없지만 당연하게 공백이 단어 사이에 하나만 존재할것이라 생각하고 공백으로 파싱하거나하는 실수를 많이 했습니다. 이 문제에서도 공백을 하나만 있다 생각하고 split(" ")과 같이 공백을 기준으로 파싱하면 주어진 3개 예제는 맞아도 여러 테스트에서 런타임 오류가 발생합니다. 공백은 하나 이상 존재합니다.


공백이 하나 이상 존재하기 때문에 첫 문자가 대문자인지 blank란 변수를 두고 판별하도록 하였습니다. Character의 라이브러리를 활용하여 대소문자 변경을 쉽게 하였으며 공백이 들어가면 공백을 return해줍니다.


소스 코드

class Solution {
    public String solution(String s) {
        StringBuilder sb = new StringBuilder();

        boolean blank = true;

        for (char c : s.toCharArray()) {
            sb.append(blank ? Character.toUpperCase(c) : Character.toLowerCase(c));
            blank = c == ' ' ? true : false;
        }

        return sb.toString();
    }
}
반응형