[프로그래머스/Java] Lv.2 JadenCase 문자열 만들기

이은정·2024년 8월 14일

프로그래머스/Java

목록 보기
11/74

문제

로직

  1. 띄어쓰기를 기준으로 문자열을 나누어 배열에 저장한다.
  2. 배열의 각 값에 접근하여 해당 문자열의 각 자리에 접근한다.
  3. 첫 번째 글자는 upperCase로 변경하고 나머지 모든 글자는 lowerCase로 변경한다.

코드

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        String[] sArr = s.split(" ", -1);
        
        for (int i = 0 ; i < sArr.length; i ++) {
            
            if(!sArr[i].isEmpty()) {
                answer += Character.toUpperCase(sArr[i].charAt(0));
                answer += sArr[i].substring(1).toLowerCase();
            }
            
            if (i < sArr.length - 1) {
                answer += " ";
            }
        }
        return answer;
    }
}

결과

막힌 점

  1. 첫 번째 문자만 대문자로 변경하는 방법
    첫 번째 문자만 대문자로 바꿔서 answer에 저장하고 나머지 문자들은 소문자로 바꿔서 answer에 저장하는 방법을 생각해내는데 오랜 시간이 걸렸다.
    처음에는 문자열을 반복문을 돌려서 문자로 변경한 후에 첫번째 문자일 경우에만 대문자로 바꾸고 나머지는 소문자로 answer에 저장하는 방식을 진행했었다.
    그렇게 하니 이중 for 문을 사용하게 되는 것이 불편했다.
    그래서 subString을 이용하여 원하는 인덱스부터 저장하는 방식을 취했다.

  2. 문자열의 가장 마지막에 공백이 들어갔을 때
    그냥 s.split(" ")을 써서 문자열의 가장 마지막에 공백이 들어갔을 때 해당 공백들은 배열에 저장이 아예 되지 않았다.
    처음에는 s의 마지막에 " s"를 저장한 다음 split을 진행하고 배열의 마지막 값은 읽지 않는 것으로 코드를 짰다. 그렇게 하니 if 문이 너무 늘어나게 되었다.
    그래서 이렇게 복잡하게 하지 않고 공백도 저장할 수 있는 방식을 찾았다.
    s.split(" ", -1)을 쓰는 방식이다. 해당 함수의 2번째 인자는 limit을 나타내는 것이었다. 그래서 -1을 쓰게 되면 공백도 포함하여 문자열을 나누어서 배열에 저장한다

profile
돈 많은 백수가 꿈인 백엔드 개발자 지망생

0개의 댓글