devFancy BE Developer

[Programmers] 12951. JadenCase 문자열 만들기

2023-02-03
devfancy

문제 링크

성능 요약

메모리: 86.2 MB, 시간: 4.88 ms - Answer Code1

구분

코딩테스트 연습 > 연습문제

Answer Code1(23.02.03)

import java.util.*;

class Solution {
    public String solution(String str) {
        String answer = "";
        // 1. 공백을 기준으로 문자열을 잘라서 String 배열에 저장
        String [] strArr = str.split(" ");
        // 2. 잘린 String 배열을 순서대로 처리
        for(int i = 0; i < strArr.length; i++) {
            String now = strArr[i];

            // 문자열의 길이가 0이면 " " 추가
            if(strArr[i].length() == 0) {
                answer += " ";
            }
            // 문자열의 길이가 있다면
            else {
                // 첫번째 문자는 소문자 -> 대문자로 변환
                answer += now.substring(0, 1).toUpperCase();
                // 나머지 문자는 대문자 -> 소문자로 변환
                answer += now.substring(1, now.length()).toLowerCase();
                // 단어 사이에 공백을 위해 마지막에 `" "`을 추가
                answer += " ";
            }
        }
        // 3. 입력 받은 문자열의 맨 마지막이 " "이라면(기존에 있었던 공백이면), 바로 answer 반환
        if(str.substring(str.length()-1, str.length()).equals(" ")) {
            return answer;
        }
        // 4. 입력 받은 문자열의 맨 마지막이 `" "`이 아니라면 해당 부분을 제거하고 반환
        return answer.substring(0, answer.length()-1);
    }
}

Answer Code1 - 문제풀이

  1. 기존 문자열 이름인 str 을 split(" ")을 사용하여 공백을 기준으로 잘라서 String 배열에 저장한다.

  2. 잘린 String 배열을 순서대로 처리한다.

    • 첫 번째 문자와 나머지 문자를 나눈다 -> substring()

    • 첫 번째만 대문자로, 나머지는 소문자로 변환한다.

      • toUpperCase() : 소문자 -> 대문자

      • toLowerCase() : 대문자 -> 소문자

    • 단어 사이에 공백을 위해 마지막에 " "을 추가한다.

  3. 입력 받은 문자열의 맨 마지막이 " "이라면(기존에 있었던 공백이면), 바로 answer을 반환한다.(마지막 공백을 지우지 않는다)

  4. 입력 받은 문자열의 맨 마지막이 " "이 아니라면 해당 부분을 제거하고 반환한다.

Review

  • 첫 번째 부분과 나머지 부분을 구분하는 경우에는 substring() 을 사용하자.

  • 소문자와 대문자간 변환할 때 쓰이는 toUpperCase(), toLowerCase()에 대해 다시 공부하게 되었고,

  • (중요) 문제풀이 - 3번째 조건 부분이 없으면 테스트케이스 부분이 실패로 되버렸다.

    • 문제에 대한 설명 부분을 놓치지 말고, 완벽히 이해해야 한다는 것을 일깨워줬다.

Comments

Index